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

Commit e901dbde authored by Sebastien Hertz's avatar Sebastien Hertz
Browse files

Report runtime information to DDMS

Reports runtime's ABI and internal flags to be displayed by DDMS.

Bug: 14888999
Bug: 14888124
Change-Id: I8a2d3f22f84a093be2fbc74464af6aa7b2a2bebb
parent 0a5236a7
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import org.apache.harmony.dalvik.ddmc.DdmServer;
import android.util.Log;
import android.os.Debug;
import android.os.UserHandle;
import dalvik.system.VMRuntime;

import java.nio.ByteBuffer;

@@ -126,8 +127,21 @@ public class DdmHandleHello extends ChunkHandler {
        //    appName = "unknown";
        String appName = DdmHandleAppName.getAppName();

        ByteBuffer out = ByteBuffer.allocate(20
                            + vmIdent.length()*2 + appName.length()*2);
        VMRuntime vmRuntime = VMRuntime.getRuntime();
        String instructionSetDescription =
            vmRuntime.is64Bit() ? "64-bit" : "32-bit";
        String vmInstructionSet = vmRuntime.vmInstructionSet();
        if (vmInstructionSet != null && vmInstructionSet.length() > 0) {
          instructionSetDescription += " (" + vmInstructionSet + ")";
        }
        String vmFlags = "CheckJNI="
            + (vmRuntime.isCheckJniEnabled() ? "true" : "false");

        ByteBuffer out = ByteBuffer.allocate(28
                            + vmIdent.length() * 2
                            + appName.length() * 2
                            + instructionSetDescription.length() * 2
                            + vmFlags.length() * 2);
        out.order(ChunkHandler.CHUNK_ORDER);
        out.putInt(DdmServer.CLIENT_PROTOCOL_VERSION);
        out.putInt(android.os.Process.myPid());
@@ -136,6 +150,10 @@ public class DdmHandleHello extends ChunkHandler {
        putString(out, vmIdent);
        putString(out, appName);
        out.putInt(UserHandle.myUserId());
        out.putInt(instructionSetDescription.length());
        putString(out, instructionSetDescription);
        out.putInt(vmFlags.length());
        putString(out, vmFlags);

        Chunk reply = new Chunk(CHUNK_HELO, out);