NativeInterpreterWrapper.smali
.class public final Lorg/tensorflow/lite/NativeInterpreterWrapper;
.super Ljava/lang/Object;
.source "NativeInterpreterWrapper.java"
# interfaces
.implements Ljava/lang/AutoCloseable;
# instance fields
.field public a:J
.field public b:J
.field public c:J
.field public d:Ljava/nio/ByteBuffer;
.field public e:[Lorg/tensorflow/lite/Tensor;
.field public f:[Lorg/tensorflow/lite/Tensor;
.field public g:Z
.field public final h:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lnq/a;",
">;"
}
.end annotation
.end field
.field public final i:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Ljava/lang/AutoCloseable;",
">;"
}
.end annotation
.end field
.field public inferenceDurationNanoseconds:J
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Ljava/nio/ByteBuffer;Lnq/b$a;)V
.registers 9
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const-wide/16 v0, -0x1
iput-wide v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->inferenceDurationNanoseconds:J
const/4 v0, 0x0
iput-boolean v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->g:Z
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->h:Ljava/util/List;
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->i:Ljava/util/List;
invoke-static {}, Lorg/tensorflow/lite/TensorFlowLite;->a()V
if-eqz p1, :cond_45
instance-of v0, p1, Ljava/nio/MappedByteBuffer;
if-nez v0, :cond_31
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->isDirect()Z
move-result v0
if-eqz v0, :cond_45
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->order()Ljava/nio/ByteOrder;
move-result-object v0
invoke-static {}, Ljava/nio/ByteOrder;->nativeOrder()Ljava/nio/ByteOrder;
move-result-object v1
if-ne v0, v1, :cond_45
:cond_31
iput-object p1, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->d:Ljava/nio/ByteBuffer;
const/16 p1, 0x200
invoke-static {p1}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->createErrorReporter(I)J
move-result-wide v1
iget-object p1, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->d:Ljava/nio/ByteBuffer;
invoke-static {p1, v1, v2}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->createModelWithBuffer(Ljava/nio/ByteBuffer;J)J
move-result-wide v3
move-object v0, p0
move-object v5, p2
invoke-virtual/range {v0 .. v5}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a(JJLnq/b$a;)V
return-void
:cond_45
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "Model ByteBuffer should be either a MappedByteBuffer of the model file, or a direct ByteBuffer using ByteOrder.nativeOrder() which contains bytes of model content."
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method public static a(Ljava/util/List;)Lnq/a;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Lnq/a;",
">;)",
"Lnq/a;"
}
.end annotation
const/4 v0, 0x0
:try_start_1
const-string v1, "org.tensorflow.lite.flex.FlexDelegate"
invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v1
invoke-interface {p0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p0
:cond_b
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_1e
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lnq/a;
invoke-virtual {v1, v2}, Ljava/lang/Class;->isInstance(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_b
return-object v0
:cond_1e
const/4 p0, 0x0
new-array v2, p0, [Ljava/lang/Class;
invoke-virtual {v1, v2}, Ljava/lang/Class;->getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
move-result-object v1
new-array p0, p0, [Ljava/lang/Object;
invoke-virtual {v1, p0}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p0
check-cast p0, Lnq/a;
:try_end_2d
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_2d} :catch_2e
return-object p0
:catch_2e
return-object v0
.end method
.method public static native allocateTensors(JJ)J
.end method
.method public static native allowBufferHandleOutput(JZ)V
.end method
.method public static native allowFp16PrecisionForFp32(JZ)V
.end method
.method public static native applyDelegate(JJJ)V
.end method
.method public static native createErrorReporter(I)J
.end method
.method public static native createInterpreter(JJI)J
.end method
.method public static native createModel(Ljava/lang/String;J)J
.end method
.method public static native createModelWithBuffer(Ljava/nio/ByteBuffer;J)J
.end method
.method public static native delete(JJJ)V
.end method
.method public static native getExecutionPlanLength(J)I
.end method
.method public static native getInputCount(J)I
.end method
.method public static native getInputNames(J)[Ljava/lang/String;
.end method
.method public static native getInputTensorIndex(JI)I
.end method
.method public static native getOutputCount(J)I
.end method
.method public static native getOutputDataType(JI)I
.end method
.method public static native getOutputNames(J)[Ljava/lang/String;
.end method
.method public static native getOutputTensorIndex(JI)I
.end method
.method public static native hasUnresolvedFlexOp(J)Z
.end method
.method public static native numThreads(JI)V
.end method
.method public static native resetVariableTensors(JJ)V
.end method
.method public static native resizeInput(JJI[IZ)Z
.end method
.method public static native run(JJ)V
.end method
.method public static native useNNAPI(JZ)V
.end method
.method public static native useXNNPACK(JJZI)V
.end method
# virtual methods
.method public a(I)Lorg/tensorflow/lite/Tensor;
.registers 6
if-ltz p1, :cond_18
iget-object v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->e:[Lorg/tensorflow/lite/Tensor;
array-length v1, v0
if-ge p1, v1, :cond_18
aget-object v1, v0, p1
if-nez v1, :cond_17
iget-wide v1, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
invoke-static {v1, v2, p1}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->getInputTensorIndex(JI)I
move-result v3
invoke-static {v1, v2, v3}, Lorg/tensorflow/lite/Tensor;->a(JI)Lorg/tensorflow/lite/Tensor;
move-result-object v1
aput-object v1, v0, p1
:cond_17
return-object v1
:cond_18
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Invalid input Tensor index: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {v0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public a(I[I)V
.registers 4
const/4 v0, 0x0
invoke-virtual {p0, p1, p2, v0}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a(I[IZ)V
return-void
.end method
.method public a(I[IZ)V
.registers 11
iget-wide v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
iget-wide v2, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a:J
move v4, p1
move-object v5, p2
move v6, p3
invoke-static/range {v0 .. v6}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->resizeInput(JJI[IZ)Z
move-result p2
if-eqz p2, :cond_1b
const/4 p2, 0x0
iput-boolean p2, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->g:Z
iget-object p2, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->e:[Lorg/tensorflow/lite/Tensor;
aget-object p3, p2, p1
if-eqz p3, :cond_1b
aget-object p1, p2, p1
invoke-virtual {p1}, Lorg/tensorflow/lite/Tensor;->f()V
:cond_1b
return-void
.end method
.method public final a(JJLnq/b$a;)V
.registers 12
if-nez p5, :cond_7
new-instance p5, Lnq/b$a;
invoke-direct {p5}, Lnq/b$a;-><init>()V
:cond_7
iput-wide p1, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a:J
iput-wide p3, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->c:J
iget v0, p5, Lnq/b$a;->a:I
invoke-static {p3, p4, p1, p2, v0}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->createInterpreter(JJI)J
move-result-wide p3
iput-wide p3, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
invoke-static {p3, p4}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->getInputCount(J)I
move-result p3
new-array p3, p3, [Lorg/tensorflow/lite/Tensor;
iput-object p3, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->e:[Lorg/tensorflow/lite/Tensor;
iget-wide p3, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
invoke-static {p3, p4}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->getOutputCount(J)I
move-result p3
new-array p3, p3, [Lorg/tensorflow/lite/Tensor;
iput-object p3, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->f:[Lorg/tensorflow/lite/Tensor;
iget-object p3, p5, Lnq/b$a;->c:Ljava/lang/Boolean;
if-eqz p3, :cond_32
iget-wide v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
invoke-virtual {p3}, Ljava/lang/Boolean;->booleanValue()Z
move-result p3
invoke-static {v0, v1, p3}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->allowFp16PrecisionForFp32(JZ)V
:cond_32
iget-object p3, p5, Lnq/b$a;->d:Ljava/lang/Boolean;
if-eqz p3, :cond_3f
iget-wide v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
invoke-virtual {p3}, Ljava/lang/Boolean;->booleanValue()Z
move-result p3
invoke-static {v0, v1, p3}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->allowBufferHandleOutput(JZ)V
:cond_3f
invoke-virtual {p0, p5}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a(Lnq/b$a;)V
iget-object p3, p5, Lnq/b$a;->e:Ljava/lang/Boolean;
if-eqz p3, :cond_52
iget-wide v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
invoke-virtual {p3}, Ljava/lang/Boolean;->booleanValue()Z
move-result v4
iget v5, p5, Lnq/b$a;->a:I
move-wide v2, p1
invoke-static/range {v0 .. v5}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->useXNNPACK(JJZI)V
:cond_52
iget-wide p3, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
invoke-static {p3, p4, p1, p2}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->allocateTensors(JJ)J
const/4 p1, 0x1
iput-boolean p1, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->g:Z
return-void
.end method
.method public final a(Lnq/b$a;)V
.registers 12
iget-wide v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
invoke-static {v0, v1}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->hasUnresolvedFlexOp(J)Z
move-result v0
if-eqz v0, :cond_23
iget-object v1, p1, Lnq/b$a;->f:Ljava/util/List;
invoke-static {v1}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a(Ljava/util/List;)Lnq/a;
move-result-object v1
if-eqz v1, :cond_23
iget-object v2, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->i:Ljava/util/List;
move-object v3, v1
check-cast v3, Ljava/lang/AutoCloseable;
invoke-interface {v2, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
iget-wide v4, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
iget-wide v6, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a:J
invoke-interface {v1}, Lnq/a;->a()J
move-result-wide v8
invoke-static/range {v4 .. v9}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->applyDelegate(JJJ)V
:cond_23
:try_start_23
iget-object v1, p1, Lnq/b$a;->f:Ljava/util/List;
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_29
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_46
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lnq/a;
iget-wide v3, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
iget-wide v5, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a:J
invoke-interface {v2}, Lnq/a;->a()J
move-result-wide v7
invoke-static/range {v3 .. v8}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->applyDelegate(JJJ)V
iget-object v3, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->h:Ljava/util/List;
invoke-interface {v3, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_29
:cond_46
iget-object v1, p1, Lnq/b$a;->b:Ljava/lang/Boolean;
if-eqz v1, :cond_8e
iget-object p1, p1, Lnq/b$a;->b:Ljava/lang/Boolean;
invoke-virtual {p1}, Ljava/lang/Boolean;->booleanValue()Z
move-result p1
if-eqz p1, :cond_8e
new-instance p1, Lorg/tensorflow/lite/nnapi/NnApiDelegate;
invoke-direct {p1}, Lorg/tensorflow/lite/nnapi/NnApiDelegate;-><init>()V
iget-object v1, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->i:Ljava/util/List;
invoke-interface {v1, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
iget-wide v2, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
iget-wide v4, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a:J
invoke-virtual {p1}, Lorg/tensorflow/lite/nnapi/NnApiDelegate;->a()J
move-result-wide v6
invoke-static/range {v2 .. v7}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->applyDelegate(JJJ)V
:try_end_67
.catch Ljava/lang/IllegalArgumentException; {:try_start_23 .. :try_end_67} :catch_68
goto :goto_8e
:catch_68
move-exception p1
if-eqz v0, :cond_75
iget-wide v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
invoke-static {v0, v1}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->hasUnresolvedFlexOp(J)Z
move-result v0
if-nez v0, :cond_75
const/4 v0, 0x1
goto :goto_76
:cond_75
const/4 v0, 0x0
:goto_76
if-eqz v0, :cond_8f
sget-object v0, Ljava/lang/System;->err:Ljava/io/PrintStream;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Ignoring failed delegate application: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-virtual {v0, p1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
:cond_8e
:goto_8e
return-void
:cond_8f
goto :goto_91
:goto_90
throw p1
:goto_91
goto :goto_90
.end method
.method public a([Ljava/lang/Object;Ljava/util/Map;)V
.registers 11
.annotation system Ldalvik/annotation/Signature;
value = {
"([",
"Ljava/lang/Object;",
"Ljava/util/Map<",
"Ljava/lang/Integer;",
"Ljava/lang/Object;",
">;)V"
}
.end annotation
const-wide/16 v0, -0x1
iput-wide v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->inferenceDurationNanoseconds:J
if-eqz p1, :cond_9f
array-length v0, p1
if-eqz v0, :cond_9f
if-eqz p2, :cond_97
invoke-interface {p2}, Ljava/util/Map;->isEmpty()Z
move-result v0
if-nez v0, :cond_97
const/4 v0, 0x0
const/4 v1, 0x0
:goto_13
array-length v2, p1
if-ge v1, v2, :cond_28
invoke-virtual {p0, v1}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a(I)Lorg/tensorflow/lite/Tensor;
move-result-object v2
aget-object v3, p1, v1
invoke-virtual {v2, v3}, Lorg/tensorflow/lite/Tensor;->b(Ljava/lang/Object;)[I
move-result-object v2
if-eqz v2, :cond_25
invoke-virtual {p0, v1, v2}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a(I[I)V
:cond_25
add-int/lit8 v1, v1, 0x1
goto :goto_13
:cond_28
iget-boolean v1, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->g:Z
const/4 v2, 0x1
xor-int/2addr v1, v2
if-eqz v1, :cond_37
iget-wide v3, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
iget-wide v5, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a:J
invoke-static {v3, v4, v5, v6}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->allocateTensors(JJ)J
iput-boolean v2, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->g:Z
:cond_37
const/4 v2, 0x0
:goto_38
array-length v3, p1
if-ge v2, v3, :cond_47
invoke-virtual {p0, v2}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a(I)Lorg/tensorflow/lite/Tensor;
move-result-object v3
aget-object v4, p1, v2
invoke-virtual {v3, v4}, Lorg/tensorflow/lite/Tensor;->c(Ljava/lang/Object;)V
add-int/lit8 v2, v2, 0x1
goto :goto_38
:cond_47
invoke-static {}, Ljava/lang/System;->nanoTime()J
move-result-wide v2
iget-wide v4, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
iget-wide v6, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a:J
invoke-static {v4, v5, v6, v7}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->run(JJ)V
invoke-static {}, Ljava/lang/System;->nanoTime()J
move-result-wide v4
sub-long/2addr v4, v2
if-eqz v1, :cond_6a
:goto_59
iget-object p1, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->f:[Lorg/tensorflow/lite/Tensor;
array-length v1, p1
if-ge v0, v1, :cond_6a
aget-object v1, p1, v0
if-eqz v1, :cond_67
aget-object p1, p1, v0
invoke-virtual {p1}, Lorg/tensorflow/lite/Tensor;->f()V
:cond_67
add-int/lit8 v0, v0, 0x1
goto :goto_59
:cond_6a
invoke-interface {p2}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object p1
invoke-interface {p1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_72
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result p2
if-eqz p2, :cond_94
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object p2
check-cast p2, Ljava/util/Map$Entry;
invoke-interface {p2}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Integer;
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
invoke-virtual {p0, v0}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b(I)Lorg/tensorflow/lite/Tensor;
move-result-object v0
invoke-interface {p2}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object p2
invoke-virtual {v0, p2}, Lorg/tensorflow/lite/Tensor;->a(Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_72
:cond_94
iput-wide v4, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->inferenceDurationNanoseconds:J
return-void
:cond_97
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "Input error: Outputs should not be null or empty."
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
:cond_9f
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "Input error: Inputs should not be null or empty."
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
goto :goto_a8
:goto_a7
throw p1
:goto_a8
goto :goto_a7
.end method
.method public b(I)Lorg/tensorflow/lite/Tensor;
.registers 6
if-ltz p1, :cond_18
iget-object v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->f:[Lorg/tensorflow/lite/Tensor;
array-length v1, v0
if-ge p1, v1, :cond_18
aget-object v1, v0, p1
if-nez v1, :cond_17
iget-wide v1, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
invoke-static {v1, v2, p1}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->getOutputTensorIndex(JI)I
move-result v3
invoke-static {v1, v2, v3}, Lorg/tensorflow/lite/Tensor;->a(JI)Lorg/tensorflow/lite/Tensor;
move-result-object v1
aput-object v1, v0, p1
:cond_17
return-object v1
:cond_18
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Invalid output Tensor index: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {v0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public close()V
.registers 12
const/4 v0, 0x0
const/4 v1, 0x0
:goto_2
iget-object v2, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->e:[Lorg/tensorflow/lite/Tensor;
array-length v3, v2
const/4 v4, 0x0
if-ge v1, v3, :cond_18
aget-object v3, v2, v1
if-eqz v3, :cond_15
aget-object v2, v2, v1
invoke-virtual {v2}, Lorg/tensorflow/lite/Tensor;->b()V
iget-object v2, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->e:[Lorg/tensorflow/lite/Tensor;
aput-object v4, v2, v1
:cond_15
add-int/lit8 v1, v1, 0x1
goto :goto_2
:cond_18
const/4 v1, 0x0
:goto_19
iget-object v2, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->f:[Lorg/tensorflow/lite/Tensor;
array-length v3, v2
if-ge v1, v3, :cond_2e
aget-object v3, v2, v1
if-eqz v3, :cond_2b
aget-object v2, v2, v1
invoke-virtual {v2}, Lorg/tensorflow/lite/Tensor;->b()V
iget-object v2, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->f:[Lorg/tensorflow/lite/Tensor;
aput-object v4, v2, v1
:cond_2b
add-int/lit8 v1, v1, 0x1
goto :goto_19
:cond_2e
iget-wide v5, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a:J
iget-wide v7, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->c:J
iget-wide v9, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
invoke-static/range {v5 .. v10}, Lorg/tensorflow/lite/NativeInterpreterWrapper;->delete(JJJ)V
const-wide/16 v1, 0x0
iput-wide v1, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->a:J
iput-wide v1, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->c:J
iput-wide v1, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->b:J
iput-object v4, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->d:Ljava/nio/ByteBuffer;
iput-boolean v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->g:Z
iget-object v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->h:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->clear()V
iget-object v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->i:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v0
:goto_4e
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_76
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/AutoCloseable;
:try_start_5a
invoke-interface {v1}, Ljava/lang/AutoCloseable;->close()V
:try_end_5d
.catch Ljava/lang/Exception; {:try_start_5a .. :try_end_5d} :catch_5e
goto :goto_4e
:catch_5e
move-exception v1
sget-object v2, Ljava/lang/System;->err:Ljava/io/PrintStream;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Failed to close flex delegate: "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v2, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
goto :goto_4e
:cond_76
iget-object v0, p0, Lorg/tensorflow/lite/NativeInterpreterWrapper;->i:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->clear()V
return-void
.end method