From 94ec6053894ffb8c8d459f5a9944e5104c2395e1 Mon Sep 17 00:00:00 2001 From: jaortega Date: Wed, 14 Feb 2001 22:10:35 +0000 Subject: (mix_vm_get_address_lineno) new function --- mixlib/mix_vm.c | 15 ++++++++++++++- mixlib/mix_vm.h | 6 +++++- 2 files changed, 19 insertions(+), 2 deletions(-) (limited to 'mixlib') diff --git a/mixlib/mix_vm.c b/mixlib/mix_vm.c index 3745c19..979d558 100644 --- a/mixlib/mix_vm.c +++ b/mixlib/mix_vm.c @@ -1,7 +1,7 @@ /* -*-c-*- ------------------ mix_vm.c : * Implementation of the functions declared in mix_vm.h * ------------------------------------------------------------------ - * Copyright (C) 2000 jose antonio ortega ruiz + * Copyright (C) 2000, 2001 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -311,6 +311,19 @@ mix_vm_get_prog_count (const mix_vm_t *vm) return get_loc_ (vm); } +/* Get the source line number for a given address */ +guint +mix_vm_get_address_lineno (const mix_vm_t *vm, mix_address_t addr) +{ + gpointer gp_addr = GUINT_TO_POINTER ((guint)addr); + guint lineno; + + g_return_val_if_fail (vm != NULL, 0); + g_return_val_if_fail (MEMOK_ (addr), 0); + lineno = GPOINTER_TO_UINT (g_tree_lookup (vm->address_table, gp_addr)); + return lineno; +} + /* Reposition program counter and reset state so that a loaded program can be restarted. */ diff --git a/mixlib/mix_vm.h b/mixlib/mix_vm.h index 91d1d28..ac734d7 100644 --- a/mixlib/mix_vm.h +++ b/mixlib/mix_vm.h @@ -1,7 +1,7 @@ /* ---------------------- mix_vm.h : * Types and functions implementing the MIX virtual machine * ------------------------------------------------------------------ - * Copyright (C) 2000 jose antonio ortega ruiz + * Copyright (C) 2000, 2001 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -128,6 +128,10 @@ mix_vm_get_symbol_table (const mix_vm_t *vm); extern mix_address_t mix_vm_get_prog_count (const mix_vm_t *vm); +/* Get the source line number for a given address */ +extern guint +mix_vm_get_address_lineno (const mix_vm_t *vm, mix_address_t addr); + /* Reposition program counter and reset state so that a loaded program can be restarted. */ -- cgit v1.2.3