[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] libjit ./ChangeLog jit/jit-insn.c
From: |
Aleksey Demakov |
Subject: |
[dotgnu-pnet-commits] libjit ./ChangeLog jit/jit-insn.c |
Date: |
Sun, 28 May 2006 11:11:57 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: libjit
Branch:
Changes by: Aleksey Demakov <address@hidden> 06/05/28 11:11:57
Modified files:
. : ChangeLog
jit : jit-insn.c
Log message:
At the end of initialize setjmp block add a label that is moved along
with
the block code and use it as the jump target.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/libjit/ChangeLog.diff?tr1=1.232&tr2=1.233&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/libjit/jit/jit-insn.c.diff?tr1=1.45&tr2=1.46&r1=text&r2=text
Patches:
Index: libjit/ChangeLog
diff -u libjit/ChangeLog:1.232 libjit/ChangeLog:1.233
--- libjit/ChangeLog:1.232 Sat May 27 10:18:59 2006
+++ libjit/ChangeLog Sun May 28 11:11:57 2006
@@ -1,3 +1,10 @@
+2006-05-28 Klaus Treichel <address@hidden>
+
+ * jit/jit-insn.c: Add a code_label in initialize_setjmp_block just
+ before the end_label that is moved with the block to the start of
+ the function as jump target to the code. Otherwise other blocks
+ moved to the start after this block will never be executed.
+
2006-05-27 Aleksey Demakov <address@hidden>
* jit/jit-reg-alloc.c (free_value, save_value): the value that has
Index: libjit/jit/jit-insn.c
diff -u libjit/jit/jit-insn.c:1.45 libjit/jit/jit-insn.c:1.46
--- libjit/jit/jit-insn.c:1.45 Mon Apr 10 19:42:40 2006
+++ libjit/jit/jit-insn.c Sun May 28 11:11:57 2006
@@ -7000,6 +7000,7 @@
#if !defined(JIT_BACKEND_INTERP)
jit_label_t start_label = jit_label_undefined;
jit_label_t end_label = jit_label_undefined;
+ jit_label_t code_label = jit_label_undefined;
jit_label_t rethrow_label = jit_label_undefined;
jit_type_t type;
jit_value_t args[2];
@@ -7105,7 +7106,7 @@
#endif /* !HAVE_SIGSETJMP */
/* Branch to the end of the init code if "setjmp" returned zero */
- if(!jit_insn_branch_if_not(func, value, &end_label))
+ if(!jit_insn_branch_if_not(func, value, &code_label))
{
return 0;
}
@@ -7176,6 +7177,12 @@
JIT_CALL_NOTHROW | JIT_CALL_NORETURN);
jit_type_free(type);
+ /* Insert the target to jump to the normal code. */
+ if(!jit_insn_label(func, &code_label))
+ {
+ return 0;
+ }
+
/* Force the start of a new block to mark the end of the init code */
if(!jit_insn_label(func, &end_label))
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] libjit ./ChangeLog jit/jit-insn.c,
Aleksey Demakov <=