blob: 6f4282891955012291cb728d4691f1c6c239840a [file] [log] [blame]
#include <stdio.h>
#include "vm/class.h"
#include "vm/object.h"
#include "vm/method.h"
#include "vm/field.h"
#include "vm/debug.h"
void debug_print_vm_field(struct vm_field *field)
{
if (field) {
printf(" field : %s %s\n", field->type, field->name);
if (field->class->name) {
printf("class->name : %s\n", field->class->name);
}
printf("\n");
} else {
printf("Unable to print null vm_field!\n");
}
}
void debug_print_vm_method(struct vm_method *method)
{
if (method) {
printf(" method : %s %s(", method->type, method->name);
for (int i = 0; i < method->args_count; i++) {
printf(".");
}
printf(")\n");
} else {
printf("Unable to print null vm_method!\n");
}
}
void debug_print_vm_class(struct vm_class *class)
{
if (class) {
printf("vm_class address : %p\n", class);
if (class->name)
printf("class->name : %s\n", class->name);
if (class->super)
printf("class->super->name : %s\n", class->super->name);
printf("class->kind : %d\n", class->kind);
printf("class->state : %d\n", class->state);
if (class->declaring_class)
printf("class->declaring_class->name : %s\n", class->declaring_class->name);
if (class->enclosing_class)
printf("class->enclosing_class->name : %s\n", class->enclosing_class->name);
for (uint i = 0; i < class->nr_methods; i++) {
debug_print_vm_method(&class->methods[i]);
}
for (uint i = 0; i < class->nr_fields; i++) {
debug_print_vm_field(&class->fields[i]);
}
} else {
printf("Unable to print null vm_class!\n");
}
}
void debug_print_vm_object(struct vm_object *obj)
{
if (obj) {
printf("vm_object address : %p\n", obj);
debug_print_vm_class(obj->class);
} else {
printf("Unable to print null vm_object!\n");
}
}