summaryrefslogtreecommitdiff
path: root/libguile/libguile-3.0-gdb.scm
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/libguile-3.0-gdb.scm')
-rw-r--r--libguile/libguile-3.0-gdb.scm11
1 files changed, 6 insertions, 5 deletions
diff --git a/libguile/libguile-3.0-gdb.scm b/libguile/libguile-3.0-gdb.scm
index d3c99f7d8..869b68f19 100644
--- a/libguile/libguile-3.0-gdb.scm
+++ b/libguile/libguile-3.0-gdb.scm
@@ -207,11 +207,12 @@ if the information is not available."
(define (find-vp)
"Find the scm_vm pointer for the current thread."
- (let loop ((frame (newest-frame)))
- (and frame
- (if (vm-engine-frame? frame)
- (frame-read-var frame "vp")
- (loop (frame-older frame))))))
+ (match (lookup-symbol "scm_i_current_thread")
+ ((#f _)
+ #f)
+ ((symbol _)
+ (let ((thread (symbol-value symbol)))
+ (value-field thread "vm")))))
(define (newest-vm-frame)
"Return the newest VM frame or #f."