[Top][All Lists]
[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 */ }
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] libjit ChangeLog jit/jit-rules-x86.c jit/jit-ru...,
Aleksey Demakov <=