Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0a7a9136 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Let's sprinkle some FastJNI into Parcel.

Before:

    benchmark   ns linear runtime
     ReadByte  918 ===========================
      ReadInt  877 ==========================
     ReadLong  880 ==========================
    WriteByte 1002 ==============================
     WriteInt  945 ============================
    WriteLong  957 ============================
    vm: app_process

After:

    benchmark  ns linear runtime
     ReadByte 824 ===========================
      ReadInt 780 =========================
     ReadLong 780 =========================
    WriteByte 895 =============================
     WriteInt 907 ==============================
    WriteLong 851 ============================
    vm: app_process

Change-Id: I746fe8ea3607e29d86007bd144339c84b063c360
parent 2858bd2e
Loading
Loading
Loading
Loading
+18 −18
Original line number Diff line number Diff line
@@ -722,33 +722,33 @@ static jlong android_os_Parcel_getBlobAshmemSize(JNIEnv* env, jclass clazz, jlon
// ----------------------------------------------------------------------------

static const JNINativeMethod gParcelMethods[] = {
    {"nativeDataSize",            "(J)I", (void*)android_os_Parcel_dataSize},
    {"nativeDataAvail",           "(J)I", (void*)android_os_Parcel_dataAvail},
    {"nativeDataPosition",        "(J)I", (void*)android_os_Parcel_dataPosition},
    {"nativeDataCapacity",        "(J)I", (void*)android_os_Parcel_dataCapacity},
    {"nativeSetDataSize",         "(JI)J", (void*)android_os_Parcel_setDataSize},
    {"nativeSetDataPosition",     "(JI)V", (void*)android_os_Parcel_setDataPosition},
    {"nativeSetDataCapacity",     "(JI)V", (void*)android_os_Parcel_setDataCapacity},
    {"nativeDataSize",            "!(J)I", (void*)android_os_Parcel_dataSize},
    {"nativeDataAvail",           "!(J)I", (void*)android_os_Parcel_dataAvail},
    {"nativeDataPosition",        "!(J)I", (void*)android_os_Parcel_dataPosition},
    {"nativeDataCapacity",        "!(J)I", (void*)android_os_Parcel_dataCapacity},
    {"nativeSetDataSize",         "!(JI)J", (void*)android_os_Parcel_setDataSize},
    {"nativeSetDataPosition",     "!(JI)V", (void*)android_os_Parcel_setDataPosition},
    {"nativeSetDataCapacity",     "!(JI)V", (void*)android_os_Parcel_setDataCapacity},

    {"nativePushAllowFds",        "(JZ)Z", (void*)android_os_Parcel_pushAllowFds},
    {"nativeRestoreAllowFds",     "(JZ)V", (void*)android_os_Parcel_restoreAllowFds},
    {"nativePushAllowFds",        "!(JZ)Z", (void*)android_os_Parcel_pushAllowFds},
    {"nativeRestoreAllowFds",     "!(JZ)V", (void*)android_os_Parcel_restoreAllowFds},

    {"nativeWriteByteArray",      "(J[BII)V", (void*)android_os_Parcel_writeNative},
    {"nativeWriteBlob",           "(J[BII)V", (void*)android_os_Parcel_writeBlob},
    {"nativeWriteInt",            "(JI)V", (void*)android_os_Parcel_writeInt},
    {"nativeWriteLong",           "(JJ)V", (void*)android_os_Parcel_writeLong},
    {"nativeWriteFloat",          "(JF)V", (void*)android_os_Parcel_writeFloat},
    {"nativeWriteDouble",         "(JD)V", (void*)android_os_Parcel_writeDouble},
    {"nativeWriteInt",            "!(JI)V", (void*)android_os_Parcel_writeInt},
    {"nativeWriteLong",           "!(JJ)V", (void*)android_os_Parcel_writeLong},
    {"nativeWriteFloat",          "!(JF)V", (void*)android_os_Parcel_writeFloat},
    {"nativeWriteDouble",         "!(JD)V", (void*)android_os_Parcel_writeDouble},
    {"nativeWriteString",         "(JLjava/lang/String;)V", (void*)android_os_Parcel_writeString},
    {"nativeWriteStrongBinder",   "(JLandroid/os/IBinder;)V", (void*)android_os_Parcel_writeStrongBinder},
    {"nativeWriteFileDescriptor", "(JLjava/io/FileDescriptor;)J", (void*)android_os_Parcel_writeFileDescriptor},

    {"nativeCreateByteArray",     "(J)[B", (void*)android_os_Parcel_createByteArray},
    {"nativeReadBlob",            "(J)[B", (void*)android_os_Parcel_readBlob},
    {"nativeReadInt",             "(J)I", (void*)android_os_Parcel_readInt},
    {"nativeReadLong",            "(J)J", (void*)android_os_Parcel_readLong},
    {"nativeReadFloat",           "(J)F", (void*)android_os_Parcel_readFloat},
    {"nativeReadDouble",          "(J)D", (void*)android_os_Parcel_readDouble},
    {"nativeReadInt",             "!(J)I", (void*)android_os_Parcel_readInt},
    {"nativeReadLong",            "!(J)J", (void*)android_os_Parcel_readLong},
    {"nativeReadFloat",           "!(J)F", (void*)android_os_Parcel_readFloat},
    {"nativeReadDouble",          "!(J)D", (void*)android_os_Parcel_readDouble},
    {"nativeReadString",          "(J)Ljava/lang/String;", (void*)android_os_Parcel_readString},
    {"nativeReadStrongBinder",    "(J)Landroid/os/IBinder;", (void*)android_os_Parcel_readStrongBinder},
    {"nativeReadFileDescriptor",  "(J)Ljava/io/FileDescriptor;", (void*)android_os_Parcel_readFileDescriptor},
@@ -765,7 +765,7 @@ static const JNINativeMethod gParcelMethods[] = {
    {"nativeMarshall",            "(J)[B", (void*)android_os_Parcel_marshall},
    {"nativeUnmarshall",          "(J[BII)J", (void*)android_os_Parcel_unmarshall},
    {"nativeAppendFrom",          "(JJII)J", (void*)android_os_Parcel_appendFrom},
    {"nativeHasFileDescriptors",  "(J)Z", (void*)android_os_Parcel_hasFileDescriptors},
    {"nativeHasFileDescriptors",  "!(J)Z", (void*)android_os_Parcel_hasFileDescriptors},
    {"nativeWriteInterfaceToken", "(JLjava/lang/String;)V", (void*)android_os_Parcel_writeInterfaceToken},
    {"nativeEnforceInterface",    "(JLjava/lang/String;)V", (void*)android_os_Parcel_enforceInterface},