dotgnu-pnet-commits
[Top][All Lists]
Advanced

[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))
        {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]