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

Commit 98d56585 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

(cherry picked from commit e901dbde)

Change-Id: I248c2558f4a89ebc9bc6b7a4a54db6091d138b33
parent bbd8e6ff
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);