From: Fabrice Bellard <fabrice@bellard.org>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [4529] debug output: write helper names
Date: Thu, 22 May 2008 16:08:33 +0000 [thread overview]
Message-ID: <E1JzDLF-0003l5-Dm@cvs.savannah.gnu.org> (raw)
Revision: 4529
http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4529
Author: bellard
Date: 2008-05-22 16:08:32 +0000 (Thu, 22 May 2008)
Log Message:
-----------
debug output: write helper names
Modified Paths:
--------------
trunk/tcg/tcg.c
trunk/tcg/tcg.h
Modified: trunk/tcg/tcg.c
===================================================================
--- trunk/tcg/tcg.c 2008-05-22 14:59:57 UTC (rev 4528)
+++ trunk/tcg/tcg.c 2008-05-22 16:08:32 UTC (rev 4529)
@@ -516,22 +516,11 @@
s->helpers = realloc(s->helpers, n * sizeof(TCGHelperInfo));
s->allocated_helpers = n;
}
- s->helpers[s->nb_helpers].func = func;
+ s->helpers[s->nb_helpers].func = (tcg_target_ulong)func;
s->helpers[s->nb_helpers].name = name;
s->nb_helpers++;
}
-const char *tcg_helper_get_name(TCGContext *s, void *func)
-{
- int i;
-
- for(i = 0; i < s->nb_helpers; i++) {
- if (s->helpers[i].func == func)
- return s->helpers[i].name;
- }
- return NULL;
-}
-
static inline TCGType tcg_get_base_type(TCGContext *s, TCGv arg)
{
return s->temps[GET_TCGV(arg)].base_type;
@@ -718,6 +707,37 @@
return tcg_get_arg_str_idx(s, buf, buf_size, GET_TCGV(arg));
}
+/* find helper definition (XXX: inefficient) */
+static TCGHelperInfo *tcg_find_helper(TCGContext *s, tcg_target_ulong val)
+{
+ int i;
+ for(i = 0; i < s->nb_helpers; i++) {
+ if (s->helpers[i].func == val)
+ return &s->helpers[i];
+ }
+ return NULL;
+}
+
+static const char *tcg_get_helper_str_idx(TCGContext *s, char *buf, int buf_size,
+ int idx)
+{
+ TCGTemp *ts;
+ TCGHelperInfo *th;
+
+ ts = &s->temps[idx];
+ if (ts->val_type == TEMP_VAL_CONST) {
+ /* find helper name (XXX: inefficient) */
+ th = tcg_find_helper(s, ts->val);
+ if (th) {
+ pstrcpy(buf, buf_size, "$");
+ pstrcat(buf, buf_size, th->name);
+ return buf;
+ }
+ }
+ return tcg_get_arg_str_idx(s, buf, buf_size, idx);
+}
+
+
void tcg_dump_ops(TCGContext *s, FILE *outfile)
{
const uint16_t *opc_ptr;
@@ -735,6 +755,7 @@
fprintf(outfile, " %s ", def->name);
if (c == INDEX_op_call) {
TCGArg arg;
+
/* variable number of arguments */
arg = *args++;
nb_oargs = arg >> 16;
@@ -742,9 +763,8 @@
nb_cargs = def->nb_cargs;
/* function name */
- /* XXX: dump helper name for call */
fprintf(outfile, "%s",
- tcg_get_arg_str_idx(s, buf, sizeof(buf), args[nb_oargs + nb_iargs - 1]));
+ tcg_get_helper_str_idx(s, buf, sizeof(buf), args[nb_oargs + nb_iargs - 1]));
/* flags */
fprintf(outfile, ",$0x%" TCG_PRIlx,
args[nb_oargs + nb_iargs]);
Modified: trunk/tcg/tcg.h
===================================================================
--- trunk/tcg/tcg.h 2008-05-22 14:59:57 UTC (rev 4528)
+++ trunk/tcg/tcg.h 2008-05-22 16:08:32 UTC (rev 4529)
@@ -192,7 +192,7 @@
} TCGTemp;
typedef struct TCGHelperInfo {
- void *func;
+ tcg_target_ulong func;
const char *name;
} TCGHelperInfo;
reply other threads:[~2008-05-22 16:08 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1JzDLF-0003l5-Dm@cvs.savannah.gnu.org \
--to=fabrice@bellard.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).