code cleanup in debugger
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 14 Dec 2022 23:46:38 +0000 (17:46 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 14 Dec 2022 23:46:38 +0000 (17:46 -0600)
compiler/src/wasm_output.h
interpreter/src/debug/debug_runtime_values.c
interpreter/src/debug/debug_thread.c
misc/vscode/package.json
shared/lib/linux_x86_64/lib/libovmwasm.so

index b6e061441fda16c275dbecff95fda1312345d362..4d1e4b20404ed4549c3b58b97875644801521f25 100644 (file)
@@ -952,8 +952,7 @@ static i32 output_ovm_debug_sections(OnyxWasmModule* module, bh_buffer* buff) {
                     AstEnumValue *ev = *pev;
 
                     output_unsigned_integer(get_expression_integer_value(ev->value, NULL), &section_buff);
-                    output_unsigned_integer(ev->token->length, &section_buff);
-                    bh_buffer_append(&section_buff, ev->token->text, ev->token->length);
+                    output_name(ev->token->text, ev->token->length, &section_buff);
                 }
                 continue;
             }
@@ -971,6 +970,12 @@ static i32 output_ovm_debug_sections(OnyxWasmModule* module, bh_buffer* buff) {
                 continue;
             }
 
+            if (type->kind == Type_Kind_DynArray) {
+                output_unsigned_integer(7, &section_buff);
+                output_unsigned_integer(type->DynArray.elem->id, &section_buff);
+                continue;
+            }
+
             if (type_is_structlike_strict(type)) {
                 output_unsigned_integer(3, &section_buff);
 
index 7d383c5c2332933f4a28b9192b6967cde3e68f6c..256834544d9c6bd9cceb1e48208b102e99619af9 100644 (file)
@@ -4,6 +4,8 @@
 
 #include <ctype.h>
 
+#define MAX_SLICE_LENGTH 64
+
 static char write_buf[4096];
 
 #define WRITE(str) do {    \
@@ -188,8 +190,8 @@ static void append_slice_from_memory(debug_runtime_value_builder_t *builder, voi
     debug_type_info_t *elem_type = &builder->info->types[type_id];
 
     b32 count_overflowed = 0;
-    if (count > 256) {
-        count = 256;
+    if (count > MAX_SLICE_LENGTH) {
+        count = MAX_SLICE_LENGTH;
         count_overflowed = 1;
     }
 
@@ -417,6 +419,10 @@ static u32 get_subvalues_for_type(debug_runtime_value_builder_t *builder, u32 ty
                 count = *ptr_loc;
             }
 
+            if (count > MAX_SLICE_LENGTH * 4) {
+                count = MAX_SLICE_LENGTH * 4;
+            }
+
             return count;
         }
     }
@@ -577,8 +583,6 @@ bool debug_runtime_value_build_step(debug_runtime_value_builder_t *builder) {
         builder->it_type = type->modifier.modified_type;
         builder->it_has_children = get_subvalues_for_type(builder, builder->it_type) > 0;
 
-        // builder->it_loc_kind = debug_sym_loc_global;
-        // builder->it_loc = builder->base_loc;
         if (builder->base_loc_kind == debug_sym_loc_register) {
             ovm_value_t value;
             if (lookup_register_in_frame(builder->ovm_state, builder->ovm_frame, builder->base_loc, &value)) {
@@ -609,10 +613,7 @@ bool debug_runtime_value_build_step(debug_runtime_value_builder_t *builder) {
 
     if (type->kind == debug_type_kind_structure) {
         debug_type_structure_member_t *mem = &type->structure.members[builder->it_index];
-        snprintf(tmp_buffer, 2048, "%s", mem->name);
-        strncpy(name_buffer, tmp_buffer, 2048);
-
-        builder->it_name = name_buffer;
+        builder->it_name = mem->name;
         builder->it_has_children = get_subvalues_for_type(builder, mem->type) > 0;
         builder->it_type = mem->type;
 
index d613fdd9e9dacea71895553d675d092d5997315c..40ffd16bb63f9775051bd0242f053f034682ec39 100644 (file)
@@ -564,8 +564,11 @@ void *__debug_thread_entry(void * data) {
             }
         }
 
-        send(debug->client_fd, debug->send_buffer.data, debug->send_buffer.length, 0);
-        bh_buffer_clear(&debug->send_buffer);
+        if (debug->send_buffer.length > 0) {
+            send(debug->client_fd, &debug->send_buffer.length, sizeof(i32), 0);
+            send(debug->client_fd, debug->send_buffer.data, debug->send_buffer.length, 0);
+            bh_buffer_clear(&debug->send_buffer);
+        }
 
         bh_arena_clear(&debug->tmp_arena);
     }
index d4733bbb00226315c202ce5b321e5a643a1ad7e0..ba240183404a3c0e05acab8d130e1327fb731ae1 100644 (file)
@@ -2,7 +2,7 @@
     "name": "onyx",
     "displayName": "Onyx",
     "description": "Onyx syntax highlighting.",
-    "version": "0.1.0",
+    "version": "0.1.1",
     "publisher": "brendanfh",
     "license": "BSD-2-Clause",
     "engines": {
index 1ff06037cf6cef1f9c595afde954e9d412213fc5..7d688d2ee916272efd51ac5a5ce4de0e86ed1f3e 100755 (executable)
Binary files a/shared/lib/linux_x86_64/lib/libovmwasm.so and b/shared/lib/linux_x86_64/lib/libovmwasm.so differ