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-rules-x86.c jit/jit-ru...


From: Aleksey Demakov
Subject: [dotgnu-pnet-commits] libjit ChangeLog jit/jit-rules-x86.c jit/jit-ru...
Date: Tue, 28 Nov 2006 16:10:07 +0000

CVSROOT:        /sources/dotgnu-pnet
Module name:    libjit
Changes by:     Aleksey Demakov <avd>   06/11/28 16:10:07

Modified files:
        .              : ChangeLog 
        jit            : jit-rules-x86.c jit-rules-x86.ins 

Log message:
        applied patch #5503 with some modifications

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.283&r2=1.284
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-rules-x86.c?cvsroot=dotgnu-pnet&r1=1.40&r2=1.41
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-rules-x86.ins?cvsroot=dotgnu-pnet&r1=1.24&r2=1.25

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.283
retrieving revision 1.284
diff -u -b -r1.283 -r1.284
--- ChangeLog   26 Nov 2006 20:42:01 -0000      1.283
+++ ChangeLog   28 Nov 2006 16:10:07 -0000      1.284
@@ -1,3 +1,10 @@
+2006-11-27  Kirill Kononenko  <address@hidden>
+
+       * jit/jit-rules-x86.c (throw_builtin):
+       * jit/jit-rules-x86.ins (JIT_OP_THROW, JIT_OP_LOAD_PC): directly use
+       the inst variable to get current PC value for the position-dependent
+       code case (patch #5503).
+
 2006-11-27  Aleksey Demakov  <address@hidden>
 
        * include/jit/jit-context.h: add JIT_OPTION_POSITION_INDEPENDENT
@@ -7,6 +14,11 @@
        * jit/jit-function.c (_jit_function_ensure_builder): initialize
        position_independent field.
 
+       * jit/jit-rules-x86.c (throw_builtin):
+       * jit/jit-rules-x86.ins (JIT_OP_ADDRESS_OF_LABEL, JIT_OP_JUMP_TABLE)
+       (JIT_OP_THROW, JIT_OP_LOAD_PC): add position_independent check and
+       stub missing cases.
+
 2006-11-26  Kirill Kononenko  <address@hidden>
 
        * jit/jit-rules-x86.ins: if JIT_USE_SIGNALS is defined do not emit

Index: jit/jit-rules-x86.c
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-rules-x86.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- jit/jit-rules-x86.c 14 Sep 2006 06:27:08 -0000      1.40
+++ jit/jit-rules-x86.c 28 Nov 2006 16:10:07 -0000      1.41
@@ -1296,10 +1296,20 @@
        if(func->builder->setjmp_value != 0)
        {
                _jit_gen_fix_value(func->builder->setjmp_value);
+               if(func->builder->position_independent)
+               {
                x86_call_imm(inst, 0);
                x86_pop_membase(inst, X86_EBP,
-                                               
func->builder->setjmp_value->frame_offset +
-                                               jit_jmp_catch_pc_offset);
+                                       
func->builder->setjmp_value->frame_offset
+                                       + jit_jmp_catch_pc_offset);
+               }
+               else
+               {
+                       int pc = (int) inst;
+                       x86_mov_membase_imm(inst, X86_EBP,
+                                           
func->builder->setjmp_value->frame_offset
+                                           + jit_jmp_catch_pc_offset, pc, 4);
+               }
        }
 
        /* Push the exception type onto the stack */

Index: jit/jit-rules-x86.ins
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-rules-x86.ins,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- jit/jit-rules-x86.ins       26 Nov 2006 20:42:01 -0000      1.24
+++ jit/jit-rules-x86.ins       28 Nov 2006 16:10:07 -0000      1.25
@@ -1623,10 +1623,20 @@
                        /* We have a "setjmp" block in the current function,
                           so we must record the location of the throw first */
                        _jit_gen_fix_value(func->builder->setjmp_value);
+                       if(func->builder->position_independent)
+                       {
                        x86_call_imm(inst, 0);
                        x86_pop_membase(inst, X86_EBP,
-                                                       
func->builder->setjmp_value->frame_offset +
-                                                       
jit_jmp_catch_pc_offset);
+                                               
func->builder->setjmp_value->frame_offset
+                                               + jit_jmp_catch_pc_offset);
+                       }
+                       else
+                       {
+                               int pc = (int) inst;
+                               x86_mov_membase_imm(inst, X86_EBP,
+                                                   
func->builder->setjmp_value->frame_offset
+                                                   + jit_jmp_catch_pc_offset, 
pc, 4);
+                       }
                }
                x86_call_code(inst, (void *)jit_exception_throw);
        }
@@ -1636,9 +1646,17 @@
 
 JIT_OP_LOAD_PC:
        [=reg] -> {
+               if(func->builder->position_independent)
+               {
                x86_call_imm(inst, 0);
                x86_pop_reg(inst, $1);
        }
+               else
+               {
+                       int pc = (int) inst;
+                       x86_mov_reg_imm(inst, $1, pc);
+               }
+       }
 
 JIT_OP_LOAD_EXCEPTION_PC: manual
        [] -> { /* Not used in native code back ends */ }




reply via email to

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