Add support in dbg.debug_obj for printing the obj body.
This commit is contained in:
parent
d9e3fb2c5d
commit
7ccdb88374
2 changed files with 19 additions and 4 deletions
|
@ -9,7 +9,7 @@ native "rust" mod rustrt {
|
|||
fn debug_opaque[T](&T x);
|
||||
fn debug_box[T](@T x);
|
||||
fn debug_tag[T](&T x);
|
||||
fn debug_obj[T](&T x, uint nmethods);
|
||||
fn debug_obj[T](&T x, uint nmethods, uint nbytes);
|
||||
fn debug_fn[T](&T x);
|
||||
}
|
||||
|
||||
|
@ -33,8 +33,17 @@ fn debug_tag[T](&T x) {
|
|||
rustrt.debug_tag[T](x);
|
||||
}
|
||||
|
||||
fn debug_obj[T](&T x, uint nmethods) {
|
||||
rustrt.debug_obj[T](x, nmethods);
|
||||
/**
|
||||
* `nmethods` is the number of methods we expect the object to have. The
|
||||
* runtime will print this many words of the obj vtbl).
|
||||
*
|
||||
* `nbytes` is the number of bytes of body data we expect the object to have.
|
||||
* The runtime will print this many bytes of the obj body. You probably want
|
||||
* this to at least be 4u, since an implicit captured tydesc pointer sits in
|
||||
* the front of any obj's data tuple.x
|
||||
*/
|
||||
fn debug_obj[T](&T x, uint nmethods, uint nbytes) {
|
||||
rustrt.debug_obj[T](x, nmethods, nbytes);
|
||||
}
|
||||
|
||||
fn debug_fn[T](&T x) {
|
||||
|
|
|
@ -308,7 +308,8 @@ struct rust_obj {
|
|||
};
|
||||
|
||||
extern "C" CDECL void
|
||||
debug_obj(rust_task *task, type_desc *t, rust_obj *obj, size_t nmethods)
|
||||
debug_obj(rust_task *task, type_desc *t, rust_obj *obj,
|
||||
size_t nmethods, size_t nbytes)
|
||||
{
|
||||
task->log(rust_log::STDLIB,
|
||||
"debug_obj with %" PRIdPTR " methods", nmethods);
|
||||
|
@ -318,6 +319,11 @@ debug_obj(rust_task *task, type_desc *t, rust_obj *obj, size_t nmethods)
|
|||
|
||||
for (uintptr_t *p = obj->vtbl; p < obj->vtbl + nmethods; ++p)
|
||||
task->log(rust_log::STDLIB, " vtbl word: 0x%" PRIxPTR, *p);
|
||||
|
||||
for (uintptr_t i = 0; i < nbytes; ++i)
|
||||
task->log(rust_log::STDLIB,
|
||||
" body byte %" PRIdPTR ": 0x%" PRIxPTR,
|
||||
i, obj->body->data[i]);
|
||||
}
|
||||
|
||||
struct rust_fn {
|
||||
|
|
Loading…
Reference in a new issue