.class public final Lcom/google/protobuf/UnsafeUtil$JvmMemoryAccessor; .super Lcom/google/protobuf/UnsafeUtil$MemoryAccessor; .source "SourceFile" # annotations .annotation system Ldalvik/annotation/EnclosingClass; value = Lcom/google/protobuf/UnsafeUtil; .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x19 name = "JvmMemoryAccessor" .end annotation # direct methods .method public constructor (Lsun/misc/Unsafe;)V .locals 0 .line 613 invoke-direct {p0, p1}, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->(Lsun/misc/Unsafe;)V return-void .end method # virtual methods .method public copyMemory(J[BJJ)V .locals 10 move-object v0, p0 iget-object v1, v0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; const/4 v2, 0x0 .line 741 sget-wide v3, Lcom/google/protobuf/UnsafeUtil;->BYTE_ARRAY_BASE_OFFSET:J add-long v6, v3, p4 move-wide v3, p1 move-object v5, p3 move-wide/from16 v8, p6 invoke-virtual/range {v1 .. v9}, Lsun/misc/Unsafe;->copyMemory(Ljava/lang/Object;JLjava/lang/Object;JJ)V return-void .end method .method public copyMemory([BJJJ)V .locals 10 move-object v0, p0 iget-object v1, v0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 746 sget-wide v2, Lcom/google/protobuf/UnsafeUtil;->BYTE_ARRAY_BASE_OFFSET:J add-long v3, v2, p2 const/4 v5, 0x0 move-object v2, p1 move-wide v6, p4 move-wide/from16 v8, p6 invoke-virtual/range {v1 .. v9}, Lsun/misc/Unsafe;->copyMemory(Ljava/lang/Object;JLjava/lang/Object;JJ)V return-void .end method .method public getBoolean(Ljava/lang/Object;J)Z .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 657 invoke-virtual {v0, p1, p2, p3}, Lsun/misc/Unsafe;->getBoolean(Ljava/lang/Object;J)Z move-result p1 return p1 .end method .method public getByte(J)B .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 711 invoke-virtual {v0, p1, p2}, Lsun/misc/Unsafe;->getByte(J)B move-result p1 return p1 .end method .method public getByte(Ljava/lang/Object;J)B .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 647 invoke-virtual {v0, p1, p2, p3}, Lsun/misc/Unsafe;->getByte(Ljava/lang/Object;J)B move-result p1 return p1 .end method .method public getDouble(Ljava/lang/Object;J)D .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 677 invoke-virtual {v0, p1, p2, p3}, Lsun/misc/Unsafe;->getDouble(Ljava/lang/Object;J)D move-result-wide p1 return-wide p1 .end method .method public getFloat(Ljava/lang/Object;J)F .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 667 invoke-virtual {v0, p1, p2, p3}, Lsun/misc/Unsafe;->getFloat(Ljava/lang/Object;J)F move-result p1 return p1 .end method .method public getInt(J)I .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 721 invoke-virtual {v0, p1, p2}, Lsun/misc/Unsafe;->getInt(J)I move-result p1 return p1 .end method .method public getLong(J)J .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 731 invoke-virtual {v0, p1, p2}, Lsun/misc/Unsafe;->getLong(J)J move-result-wide p1 return-wide p1 .end method .method public getStaticObject(Ljava/lang/reflect/Field;)Ljava/lang/Object; .locals 3 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 618 invoke-virtual {v0, p1}, Lsun/misc/Unsafe;->staticFieldBase(Ljava/lang/reflect/Field;)Ljava/lang/Object; move-result-object v0 iget-object v1, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; invoke-virtual {v1, p1}, Lsun/misc/Unsafe;->staticFieldOffset(Ljava/lang/reflect/Field;)J move-result-wide v1 invoke-virtual {p0, v0, v1, v2}, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; move-result-object p1 return-object p1 .end method .method public putBoolean(Ljava/lang/Object;JZ)V .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 662 invoke-virtual {v0, p1, p2, p3, p4}, Lsun/misc/Unsafe;->putBoolean(Ljava/lang/Object;JZ)V return-void .end method .method public putByte(JB)V .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 716 invoke-virtual {v0, p1, p2, p3}, Lsun/misc/Unsafe;->putByte(JB)V return-void .end method .method public putByte(Ljava/lang/Object;JB)V .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 652 invoke-virtual {v0, p1, p2, p3, p4}, Lsun/misc/Unsafe;->putByte(Ljava/lang/Object;JB)V return-void .end method .method public putDouble(Ljava/lang/Object;JD)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 682 invoke-virtual/range {v0 .. v5}, Lsun/misc/Unsafe;->putDouble(Ljava/lang/Object;JD)V return-void .end method .method public putFloat(Ljava/lang/Object;JF)V .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 672 invoke-virtual {v0, p1, p2, p3, p4}, Lsun/misc/Unsafe;->putFloat(Ljava/lang/Object;JF)V return-void .end method .method public putInt(JI)V .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 726 invoke-virtual {v0, p1, p2, p3}, Lsun/misc/Unsafe;->putInt(JI)V return-void .end method .method public putLong(JJ)V .locals 1 iget-object v0, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 736 invoke-virtual {v0, p1, p2, p3, p4}, Lsun/misc/Unsafe;->putLong(JJ)V return-void .end method .method public supportsUnsafeArrayOperations()Z .locals 10 const-class v0, Ljava/lang/Object; .line 623 invoke-super {p0}, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->supportsUnsafeArrayOperations()Z move-result v1 const/4 v2, 0x0 if-nez v1, :cond_0 return v2 :cond_0 :try_start_0 iget-object v1, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 628 invoke-virtual {v1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v1 const-string v3, "getByte" const/4 v4, 0x2 new-array v5, v4, [Ljava/lang/Class; aput-object v0, v5, v2 sget-object v6, Ljava/lang/Long;->TYPE:Ljava/lang/Class; const/4 v7, 0x1 aput-object v6, v5, v7 .line 629 invoke-virtual {v1, v3, v5}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v3, "putByte" const/4 v5, 0x3 new-array v8, v5, [Ljava/lang/Class; aput-object v0, v8, v2 aput-object v6, v8, v7 sget-object v9, Ljava/lang/Byte;->TYPE:Ljava/lang/Class; aput-object v9, v8, v4 .line 630 invoke-virtual {v1, v3, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v3, "getBoolean" new-array v8, v4, [Ljava/lang/Class; aput-object v0, v8, v2 aput-object v6, v8, v7 .line 631 invoke-virtual {v1, v3, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v3, "putBoolean" new-array v8, v5, [Ljava/lang/Class; aput-object v0, v8, v2 aput-object v6, v8, v7 sget-object v9, Ljava/lang/Boolean;->TYPE:Ljava/lang/Class; aput-object v9, v8, v4 .line 632 invoke-virtual {v1, v3, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v3, "getFloat" new-array v8, v4, [Ljava/lang/Class; aput-object v0, v8, v2 aput-object v6, v8, v7 .line 633 invoke-virtual {v1, v3, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v3, "putFloat" new-array v8, v5, [Ljava/lang/Class; aput-object v0, v8, v2 aput-object v6, v8, v7 sget-object v9, Ljava/lang/Float;->TYPE:Ljava/lang/Class; aput-object v9, v8, v4 .line 634 invoke-virtual {v1, v3, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v3, "getDouble" new-array v8, v4, [Ljava/lang/Class; aput-object v0, v8, v2 aput-object v6, v8, v7 .line 635 invoke-virtual {v1, v3, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v3, "putDouble" new-array v5, v5, [Ljava/lang/Class; aput-object v0, v5, v2 aput-object v6, v5, v7 sget-object v0, Ljava/lang/Double;->TYPE:Ljava/lang/Class; aput-object v0, v5, v4 .line 636 invoke-virtual {v1, v3, v5}, 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 v7 :catchall_0 move-exception v0 .line 640 invoke-static {v0}, Lcom/google/protobuf/UnsafeUtil;->access$000(Ljava/lang/Throwable;)V return v2 .end method .method public supportsUnsafeByteBufferOperations()Z .locals 10 const-class v0, Ljava/lang/Object; const-string v1, "copyMemory" .line 687 invoke-super {p0}, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->supportsUnsafeByteBufferOperations()Z move-result v2 const/4 v3, 0x0 if-nez v2, :cond_0 return v3 :cond_0 :try_start_0 iget-object v2, p0, Lcom/google/protobuf/UnsafeUtil$MemoryAccessor;->unsafe:Lsun/misc/Unsafe; .line 692 invoke-virtual {v2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v2 const-string v4, "getByte" const/4 v5, 0x1 new-array v6, v5, [Ljava/lang/Class; sget-object v7, Ljava/lang/Long;->TYPE:Ljava/lang/Class; aput-object v7, v6, v3 .line 693 invoke-virtual {v2, v4, v6}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v4, "putByte" const/4 v6, 0x2 new-array v8, v6, [Ljava/lang/Class; aput-object v7, v8, v3 sget-object v9, Ljava/lang/Byte;->TYPE:Ljava/lang/Class; aput-object v9, v8, v5 .line 694 invoke-virtual {v2, v4, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v4, "getInt" new-array v8, v5, [Ljava/lang/Class; aput-object v7, v8, v3 .line 695 invoke-virtual {v2, v4, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v4, "putInt" new-array v8, v6, [Ljava/lang/Class; aput-object v7, v8, v3 sget-object v9, Ljava/lang/Integer;->TYPE:Ljava/lang/Class; aput-object v9, v8, v5 .line 696 invoke-virtual {v2, v4, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v4, "getLong" new-array v8, v5, [Ljava/lang/Class; aput-object v7, v8, v3 .line 697 invoke-virtual {v2, v4, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const-string v4, "putLong" new-array v8, v6, [Ljava/lang/Class; aput-object v7, v8, v3 aput-object v7, v8, v5 .line 698 invoke-virtual {v2, v4, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const/4 v4, 0x3 new-array v8, v4, [Ljava/lang/Class; aput-object v7, v8, v3 aput-object v7, v8, v5 aput-object v7, v8, v6 .line 699 invoke-virtual {v2, v1, v8}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; const/4 v8, 0x5 new-array v8, v8, [Ljava/lang/Class; aput-object v0, v8, v3 aput-object v7, v8, v5 aput-object v0, v8, v6 aput-object v7, v8, v4 const/4 v0, 0x4 aput-object v7, v8, v0 .line 700 invoke-virtual {v2, v1, v8}, 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 704 invoke-static {v0}, Lcom/google/protobuf/UnsafeUtil;->access$000(Ljava/lang/Throwable;)V return v3 .end method