[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] libjit ChangeLog include/jit/jit-opcode.h jit/j...
From: |
Aleksey Demakov |
Subject: |
[dotgnu-pnet-commits] libjit ChangeLog include/jit/jit-opcode.h jit/j... |
Date: |
Mon, 28 Aug 2006 19:52:48 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: libjit
Changes by: Aleksey Demakov <avd> 06/08/28 19:52:48
Modified files:
. : ChangeLog
include/jit : jit-opcode.h
jit : jit-opcode.c jit-dump.c
Log message:
dump jump tables
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.259&r2=1.260
http://cvs.savannah.gnu.org/viewcvs/libjit/include/jit/jit-opcode.h?cvsroot=dotgnu-pnet&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-opcode.c?cvsroot=dotgnu-pnet&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-dump.c?cvsroot=dotgnu-pnet&r1=1.13&r2=1.14
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.259
retrieving revision 1.260
diff -u -b -r1.259 -r1.260
--- ChangeLog 28 Aug 2006 17:19:06 -0000 1.259
+++ ChangeLog 28 Aug 2006 19:52:48 -0000 1.260
@@ -1,3 +1,11 @@
+2006-08-29 Aleksey Demakov <address@hidden>
+
+ * include/jit/jit-opcode.h:
+ * jit/jit-opcode.c: add JIT_OPCODE_IS_JUMP_TABLE flag to mark the
+ JIT_OP_JUMP_TABLE opcode.
+
+ * jit/jit-dump.c (jit_dump_insn, dump_interp_code): add jump table
+ dumping.
2006-08-28 Klaus Treichel <address@hidden>
Index: include/jit/jit-opcode.h
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/include/jit/jit-opcode.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- include/jit/jit-opcode.h 10 Jan 2006 21:24:42 -0000 1.13
+++ include/jit/jit-opcode.h 28 Aug 2006 19:52:48 -0000 1.14
@@ -568,6 +568,7 @@
#define JIT_OPCODE_IS_CALL_EXTERNAL 0x00004000
#define JIT_OPCODE_IS_REG 0x00008000
#define JIT_OPCODE_IS_ADDROF_LABEL 0x00010000
+#define JIT_OPCODE_IS_JUMP_TABLE 0x00020000
#define JIT_OPCODE_OPER_MASK 0x01F00000
#define JIT_OPCODE_OPER_NONE 0x00000000
#define JIT_OPCODE_OPER_ADD 0x00100000
Index: jit/jit-opcode.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-opcode.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- jit/jit-opcode.c 8 Apr 2006 09:26:05 -0000 1.17
+++ jit/jit-opcode.c 28 Aug 2006 19:52:48 -0000 1.18
@@ -539,7 +539,7 @@
/*
* Switch statement support.
*/
- {"jump_table", F_(PTR, PTR, INT)},
+ {"jump_table", F_(ANY, PTR,
INT)|JIT_OPCODE_IS_JUMP_TABLE},
};
#if defined(JIT_BACKEND_INTERP)
Index: jit/jit-dump.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-dump.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- jit/jit-dump.c 4 May 2006 06:35:45 -0000 1.13
+++ jit/jit-dump.c 28 Aug 2006 19:52:48 -0000 1.14
@@ -419,6 +419,22 @@
(long)(jit_insn_get_label(insn)));
return;
}
+ else if((flags & JIT_OPCODE_IS_JUMP_TABLE) != 0)
+ {
+ jit_label_t *labels;
+ jit_nint num_labels, label;
+ labels = (jit_label_t
*)jit_value_get_nint_constant(jit_insn_get_value1(insn));
+ num_labels =
jit_value_get_nint_constant(jit_insn_get_value2(insn));
+ fprintf(stream, "jump_table ");
+ dump_value(stream, func, jit_insn_get_dest(insn), flags &
JIT_OPCODE_DEST_MASK);
+ printf(" : {");
+ for(label = 0; label < num_labels; label++)
+ {
+ printf(" .L%ld", (long) labels[label]);
+ }
+ printf(" }");
+ return;
+ }
/* Output the destination information */
if((flags & JIT_OPCODE_DEST_MASK) != JIT_OPCODE_DEST_EMPTY &&
@@ -629,6 +645,17 @@
(long)(jit_nint)(pc[1]), (long)(jit_nint)(pc[2]));
pc += 3;
}
+ else if((info->flags &
JIT_OPCODE_IS_JUMP_TABLE) != 0)
+ {
+ jit_nint label, num_labels;
+ num_labels = (jit_nint)pc[0];
+ for(label = 1; label <= num_labels;
label++)
+ {
+ fprintf(stream, " %lX",
+
(long)(jit_nint)pc[label]);
+ }
+ pc += 1 + num_labels;
+ }
}
break;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] libjit ChangeLog include/jit/jit-opcode.h jit/j...,
Aleksey Demakov <=