[debugger] Add intrinsic for creating a byte array (mono/mono#15591)
authorThays Grazia <thaystg@gmail.com>
Wed, 10 Jul 2019 21:29:13 +0000 (18:29 -0300)
committerAlexander Köplinger <alex.koeplinger@outlook.com>
Wed, 10 Jul 2019 21:29:13 +0000 (23:29 +0200)
Fixes mono/mono#15268

Commit migrated from https://github.com/mono/mono/commit/4917c086b6f638254cefc6de4fccc700d87db97b

src/mono/mono/mini/debugger-agent.c

index 4e758c3..637894c 100644 (file)
@@ -399,7 +399,8 @@ typedef enum {
        CMD_APPDOMAIN_GET_ENTRY_ASSEMBLY = 4,
        CMD_APPDOMAIN_CREATE_STRING = 5,
        CMD_APPDOMAIN_GET_CORLIB = 6,
-       CMD_APPDOMAIN_CREATE_BOXED_VALUE = 7
+       CMD_APPDOMAIN_CREATE_BOXED_VALUE = 7,
+       CMD_APPDOMAIN_CREATE_BYTE_ARRAY = 8,
 } CmdAppDomain;
 
 typedef enum {
@@ -7219,6 +7220,21 @@ domain_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                buffer_add_objid (buf, (MonoObject*)o);
                break;
        }
+       case CMD_APPDOMAIN_CREATE_BYTE_ARRAY: {
+               ERROR_DECL (error);
+               MonoArray *arr;
+               gpointer elem;
+               domain = decode_domainid (p, &p, end, NULL, &err);
+               uintptr_t size = 0;
+               int len = decode_int (p, &p, end);
+               size = len;
+               arr = mono_array_new_full_checked (mono_domain_get (), mono_class_create_array (mono_get_byte_class(), 1), &size, NULL, error);
+               elem = mono_array_addr_internal (arr, guint8, 0);
+               memcpy (elem, p, len);
+               p += len;
+               buffer_add_objid (buf, (MonoObject*) arr);
+               break;
+       }
        case CMD_APPDOMAIN_CREATE_BOXED_VALUE: {
                ERROR_DECL (error);
                MonoClass *klass;
@@ -9377,7 +9393,8 @@ static const char* appdomain_cmds_str[] = {
        "GET_ENTRY_ASSEMBLY",
        "CREATE_STRING",
        "GET_CORLIB",
-       "CREATE_BOXED_VALUE"
+       "CREATE_BOXED_VALUE",
+       "CREATE_BYTE_ARRAY",
 };
 
 static const char* assembly_cmds_str[] = {