[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] libjit ./ChangeLog jit/jit-insn.c jit/jit-rules...
From: |
Aleksey Demakov |
Subject: |
[dotgnu-pnet-commits] libjit ./ChangeLog jit/jit-insn.c jit/jit-rules... |
Date: |
Thu, 23 Feb 2006 23:58:24 +0000 |
CVSROOT: /sources/dotgnu-pnet
Module name: libjit
Branch:
Changes by: Aleksey Demakov <address@hidden> 06/02/23 23:58:24
Modified files:
. : ChangeLog
jit : jit-insn.c jit-rules-x86.sel
Log message:
fixed jit_insn_address_of_label()
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/libjit/ChangeLog.diff?tr1=1.203&tr2=1.204&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/libjit/jit/jit-insn.c.diff?tr1=1.40&tr2=1.41&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/libjit/jit/jit-rules-x86.sel.diff?tr1=1.41&tr2=1.42&r1=text&r2=text
Patches:
Index: libjit/ChangeLog
diff -u libjit/ChangeLog:1.203 libjit/ChangeLog:1.204
--- libjit/ChangeLog:1.203 Mon Feb 20 14:05:03 2006
+++ libjit/ChangeLog Thu Feb 23 23:58:24 2006
@@ -1,3 +1,8 @@
+2006-02-24 Aleksey Demakov <address@hidden>
+
+ * jit/jit-insn.c (jit_insn_address_of_label): fix a typo.
+ * jit/jit-rules-x86.sel: fix JIT_OP_ADDRESS_OF_LABEL rule.
+
2006-02-20 Aleksey Demakov <address@hidden>
* jit/jit-rules-x86.c (_jit_create_call_return_insns): fix return
Index: libjit/jit/jit-insn.c
diff -u libjit/jit/jit-insn.c:1.40 libjit/jit/jit-insn.c:1.41
--- libjit/jit/jit-insn.c:1.40 Fri Jan 13 11:10:07 2006
+++ libjit/jit/jit-insn.c Thu Feb 23 23:58:24 2006
@@ -4100,7 +4100,7 @@
insn->opcode = (short)JIT_OP_ADDRESS_OF_LABEL;
insn->flags = JIT_INSN_VALUE1_IS_LABEL;
insn->dest = dest;
- insn->value1 = (jit_value_t)label;
+ insn->value1 = (jit_value_t)(*label);
return dest;
}
Index: libjit/jit/jit-rules-x86.sel
diff -u libjit/jit/jit-rules-x86.sel:1.41 libjit/jit/jit-rules-x86.sel:1.42
--- libjit/jit/jit-rules-x86.sel:1.41 Sun Feb 12 13:55:09 2006
+++ libjit/jit/jit-rules-x86.sel Thu Feb 23 23:58:24 2006
@@ -1925,7 +1925,11 @@
JIT_OP_ADDRESS_OF_LABEL: manual
[] -> {
unsigned char *inst;
- int reg = _jit_regs_dest_value(gen, insn->dest);
+ jit_block_t block;
+ int reg;
+
+ reg = _jit_regs_dest_value(gen, insn->dest);
+
inst = gen->posn.ptr;
if(!jit_cache_check_for_n(&(gen->posn), 32))
{
@@ -1933,11 +1937,19 @@
return;
}
reg = _jit_reg_info[reg].cpu_reg;
- inst = output_branch(func, inst, 0xB8 + reg /* mov reg, imm */,
insn);
- x86_call_imm(inst, 0);
- x86_alu_reg_membase(inst, X86_ADD, reg, X86_ESP, 0);
- x86_alu_reg_imm(inst, X86_ADD, X86_ESP, sizeof(void *));
- x86_alu_reg_imm(inst, X86_SUB, reg, 5);
+
+ block = jit_block_from_label(func, (jit_label_t)(insn->value1));
+ if(block->address)
+ {
+ x86_mov_reg_imm(inst, reg, block->address);
+ }
+ else
+ {
+ /* Output a placeholder and record on the block's fixup
list */
+ x86_mov_reg_imm(inst, reg,
(int)(block->fixup_absolute_list));
+ block->fixup_absolute_list = (void *)(inst - 4);
+ }
+
gen->posn.ptr = inst;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] libjit ./ChangeLog jit/jit-insn.c jit/jit-rules...,
Aleksey Demakov <=