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 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;
        }
 




reply via email to

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