aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoy Frostig <[email protected]>2010-09-06 23:24:01 -0700
committerRoy Frostig <[email protected]>2010-09-06 23:24:01 -0700
commitcf62b54028ef949298fc38a815f5f0a3e1666261 (patch)
tree70eb2b82b0395e6bbebb8c83ff4c2f988c1a7d4b /src
parentTest multi-ref'ed vec growth more seriously than before. (diff)
downloadrust-cf62b54028ef949298fc38a815f5f0a3e1666261.tar.xz
rust-cf62b54028ef949298fc38a815f5f0a3e1666261.zip
Add a little pointer-cast helper to dbg.
Diffstat (limited to 'src')
-rw-r--r--src/lib/dbg.rs5
-rw-r--r--src/rt/rust_builtin.cpp13
2 files changed, 18 insertions, 0 deletions
diff --git a/src/lib/dbg.rs b/src/lib/dbg.rs
index 11c0086c..0ea8bd08 100644
--- a/src/lib/dbg.rs
+++ b/src/lib/dbg.rs
@@ -14,6 +14,7 @@ native "rust" mod rustrt {
fn debug_tag[T](&T x);
fn debug_obj[T](&T x, uint nmethods, uint nbytes);
fn debug_fn[T](&T x);
+ fn debug_ptrcast[T, U](@T x) -> @U;
}
fn debug_vec[T](vec[T] v) {
@@ -52,3 +53,7 @@ fn debug_obj[T](&T x, uint nmethods, uint nbytes) {
fn debug_fn[T](&T x) {
rustrt.debug_fn[T](x);
}
+
+fn ptr_cast[T, U](@T x) -> @U {
+ ret rustrt.debug_ptrcast[T, U](x);
+}
diff --git a/src/rt/rust_builtin.cpp b/src/rt/rust_builtin.cpp
index e8bc9fc7..8654e050 100644
--- a/src/rt/rust_builtin.cpp
+++ b/src/rt/rust_builtin.cpp
@@ -340,6 +340,19 @@ debug_fn(rust_task *task, type_desc *t, rust_fn *fn)
task->log(rust_log::STDLIB, " closure at 0x%" PRIxPTR, fn->closure);
}
+extern "C" CDECL void *
+debug_ptrcast(rust_task *task,
+ type_desc *from_ty,
+ type_desc *to_ty,
+ void *ptr)
+{
+ task->log(rust_log::STDLIB, "debug_ptrcast from");
+ debug_tydesc_helper(task, from_ty);
+ task->log(rust_log::STDLIB, "to");
+ debug_tydesc_helper(task, to_ty);
+ return ptr;
+}
+
//
// Local Variables: