.class public abstract Lcom/google/protobuf/UnsafeUtil$MemoryAccessor; .super Ljava/lang/Object; .source "SourceFile" # annotations .annotation system Ldalvik/annotation/EnclosingClass; value = Lcom/google/protobuf/UnsafeUtil; .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x409 name = "MemoryAccessor" .end annotation # instance fields .field unsafe:Lsun/misc/Unsafe; # direct methods .method public constructor (Lsun/misc/Unsafe;)V .locals 0 .line 483 invoke-direct {p0}, Ljava/lang/Object;->()V iput-object p1, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; return-void .end method # virtual methods .method public final arrayBaseOffset(Ljava/lang/Class;)I .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Class<", "*>;)I" } .end annotation iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 492 invoke-virtual {v0, p1}, Lsun/misc/Unsafe;->arrayBaseOffset(Ljava/lang/Class;)I move-result p1 return p1 .end method .method public final arrayIndexScale(Ljava/lang/Class;)I .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Class<", "*>;)I" } .end annotation iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 496 invoke-virtual {v0, p1}, Lsun/misc/Unsafe;->arrayIndexScale(Ljava/lang/Class;)I move-result p1 return p1 .end method .method public abstract copyMemory(J[BJJ)V .end method .method public abstract copyMemory([BJJJ)V .end method .method public abstract getBoolean(Ljava/lang/Object;J)Z .end method .method public abstract getByte(J)B .end method .method public abstract getByte(Ljava/lang/Object;J)B .end method .method public abstract getDouble(Ljava/lang/Object;J)D .end method .method public abstract getFloat(Ljava/lang/Object;J)F .end method .method public abstract getInt(J)I .end method .method public final getInt(Ljava/lang/Object;J)I .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 533 invoke-virtual {v0, p1, p2, p3}, Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I move-result p1 return p1 .end method .method public abstract getLong(J)J .end method .method public final getLong(Ljava/lang/Object;J)J .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 541 invoke-virtual {v0, p1, p2, p3}, Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J move-result-wide p1 return-wide p1 .end method .method public final getObject(Ljava/lang/Object;J)Ljava/lang/Object; .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 561 invoke-virtual {v0, p1, p2, p3}, Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; move-result-object p1 return-object p1 .end method .method public abstract getStaticObject(Ljava/lang/reflect/Field;)Ljava/lang/Object; .end method .method public final objectFieldOffset(Ljava/lang/reflect/Field;)J .locals 2 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 488 invoke-virtual {v0, p1}, Lsun/misc/Unsafe;->objectFieldOffset(Ljava/lang/reflect/Field;)J move-result-wide v0 return-wide v0 .end method .method public abstract putBoolean(Ljava/lang/Object;JZ)V .end method .method public abstract putByte(JB)V .end method .method public abstract putByte(Ljava/lang/Object;JB)V .end method .method public abstract putDouble(Ljava/lang/Object;JD)V .end method .method public abstract putFloat(Ljava/lang/Object;JF)V .end method .method public abstract putInt(JI)V .end method .method public final putInt(Ljava/lang/Object;JI)V .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 537 invoke-virtual {v0, p1, p2, p3, p4}, Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V return-void .end method .method public abstract putLong(JJ)V .end method .method public final putLong(Ljava/lang/Object;JJ)V .locals 6 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; move-object v1, p1 move-wide v2, p2 move-wide v4, p4 .line 545 invoke-virtual/range {v0 .. v5}, Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V return-void .end method .method public final putObject(Ljava/lang/Object;JLjava/lang/Object;)V .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 565 invoke-virtual {v0, p1, p2, p3, p4}, Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V return-void .end method .method public supportsUnsafeArrayOperations()Z .locals 10 const-class v0, Ljava/lang/Class; const-class v1, Ljava/lang/Object; iget-object v2, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; const/4 v3, 0x0 if-nez v2, :cond_0 return v3 .line 510 :cond_0 :try_start_0 invoke-virtual {v2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v2 const-string v4, "objectFieldOffset" const/4 v5, 0x1 new-array v6, v5, [Ljava/lang/Class; const-class v7, Ljava/lang/reflect/Field; aput-object v7, v6, v3 .line 511 invoke-virtual {v2, v4, v6}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v4, "arrayBaseOffset" new-array v6, v5, [Ljava/lang/Class; aput-object v0, v6, v3 .line 512 invoke-virtual {v2, v4, v6}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v4, "arrayIndexScale" new-array v6, v5, [Ljava/lang/Class; aput-object v0, v6, v3 .line 513 invoke-virtual {v2, v4, v6}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v0, "getInt" const/4 v4, 0x2 new-array v6, v4, [Ljava/lang/Class; aput-object v1, v6, v3 sget-object v7, Ljava/lang/Long;->TYPE:Ljava/lang/Class; aput-object v7, v6, v5 .line 514 invoke-virtual {v2, v0, v6}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v0, "putInt" const/4 v6, 0x3 new-array v8, v6, [Ljava/lang/Class; aput-object v1, v8, v3 aput-object v7, v8, v5 sget-object v9, Ljava/lang/Integer;->TYPE:Ljava/lang/Class; aput-object v9, v8, v4 .line 515 invoke-virtual {v2, v0, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v0, "getLong" new-array v8, v4, [Ljava/lang/Class; aput-object v1, v8, v3 aput-object v7, v8, v5 .line 516 invoke-virtual {v2, v0, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v0, "putLong" new-array v8, v6, [Ljava/lang/Class; aput-object v1, v8, v3 aput-object v7, v8, v5 aput-object v7, v8, v4 .line 517 invoke-virtual {v2, v0, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v0, "getObject" new-array v8, v4, [Ljava/lang/Class; aput-object v1, v8, v3 aput-object v7, v8, v5 .line 518 invoke-virtual {v2, v0, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v0, "putObject" new-array v6, v6, [Ljava/lang/Class; aput-object v1, v6, v3 aput-object v7, v6, v5 aput-object v1, v6, v4 .line 519 invoke-virtual {v2, v0, v6}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 return v5 :catchall_0 move-exception v0 .line 523 invoke-static {v0}, Lcom/google/protobuf/UnsafeUtil;->access$000(Ljava/lang/Throwable;)V return v3 .end method .method public supportsUnsafeByteBufferOperations()Z .locals 6 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; const/4 v1, 0x0 if-nez v0, :cond_0 return v1 .line 577 :cond_0 :try_start_0 invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v0 const-string v2, "objectFieldOffset" const/4 v3, 0x1 new-array v4, v3, [Ljava/lang/Class; const-class v5, Ljava/lang/reflect/Field; aput-object v5, v4, v1 .line 579 invoke-virtual {v0, v2, v4}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v2, "getLong" const/4 v4, 0x2 new-array v4, v4, [Ljava/lang/Class; const-class v5, Ljava/lang/Object; aput-object v5, v4, v1 sget-object v5, Ljava/lang/Long;->TYPE:Ljava/lang/Class; aput-object v5, v4, v3 .line 580 invoke-virtual {v0, v2, v4}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; .line 582 invoke-static {}, Lcom/google/protobuf/UnsafeUtil;->access$100()Ljava/lang/reflect/Field; move-result-object v0 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 if-nez v0, :cond_1 return v1 :cond_1 return v3 :catchall_0 move-exception v0 .line 588 invoke-static {v0}, Lcom/google/protobuf/UnsafeUtil;->access$000(Ljava/lang/Throwable;)V return v1 .end method