]> git.unchartedbackwaters.co.uk Git - francis/libjit.git/commitdiff
The pointer value for indirect and vtable calls was being pushed onto the stack twice.
authorRhys Weatherley <rweather@southern-storm.com.au>
Mon, 6 Sep 2004 07:29:20 +0000 (07:29 +0000)
committerRhys Weatherley <rweather@southern-storm.com.au>
Mon, 6 Sep 2004 07:29:20 +0000 (07:29 +0000)
ChangeLog
jit/jit-rules-interp.c

index 7962c33bbd34e366685ec64d7b375fb1b7fd83c1..edc2bfcc2665afb784a93ace736ae817dbfe710b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
 
+2004-09-06  Rhys Weatherley  <rweather@southern-storm.com.au>
+
+       * jit/jit-rules-interp.c: the pointer value for indirect and vtable
+       calls was being pushed onto the stack twice.
+
 2004-09-05  Norbert Bollow  <nb@SoftwareEconomics.biz>
 
        * samples/hellovm.c: add a sample program that demonstrates a
index cd4efea75cb22806a03f0300e15d355a6c37b5c2..032054ee160b96ee71a0b6e0b8f133c82a564632 100644 (file)
@@ -1147,12 +1147,10 @@ void _jit_gen_insn(jit_gencode_t gen, jit_function_t func,
                case JIT_OP_CALL_INDIRECT:
                {
                        /* Call a function, whose pointer is supplied on the stack */
-                       reg = _jit_regs_load_to_top(gen, insn->value1, 0, 0);
                        jit_cache_opcode(&(gen->posn), insn->opcode);
                        jit_cache_native(&(gen->posn), (jit_nint)(insn->value2));
                        jit_cache_native(&(gen->posn), (jit_nint)
                                        (jit_type_num_params((jit_type_t)(insn->value2))));
-                       _jit_regs_free_reg(gen, reg, 1);
                        adjust_working(gen, -1);
                }
                break;
@@ -1160,9 +1158,7 @@ void _jit_gen_insn(jit_gencode_t gen, jit_function_t func,
                case JIT_OP_CALL_VTABLE_PTR:
                {
                        /* Call a function, whose vtable pointer is supplied on the stack */
-                       reg = _jit_regs_load_to_top(gen, insn->value1, 0, 0);
                        jit_cache_opcode(&(gen->posn), insn->opcode);
-                       _jit_regs_free_reg(gen, reg, 1);
                        adjust_working(gen, -1);
                }
                break;