dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dotgnu-pnet-commits] pnet ./ChangeLog engine/jitc_obj.c


From: Klaus Treichel
Subject: [dotgnu-pnet-commits] pnet ./ChangeLog engine/jitc_obj.c
Date: Sat, 25 Mar 2006 07:06:54 +0000

CVSROOT:        /cvsroot/dotgnu-pnet
Module name:    pnet
Branch:         
Changes by:     Klaus Treichel <address@hidden> 06/03/25 07:06:54

Modified files:
        .              : ChangeLog 
        engine         : jitc_obj.c 

Log message:
        2006-03-25  Klaus Treichel  <address@hidden>
        
        * enjine/jitc_obj.c: Fix a bug in ILJITCoder_CastClass that caused a
        segfault in IsInst when the object to cast was null.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/ChangeLog.diff?tr1=1.3309&tr2=1.3310&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_obj.c.diff?tr1=1.13&tr2=1.14&r1=text&r2=text

Patches:
Index: pnet/ChangeLog
diff -u pnet/ChangeLog:1.3309 pnet/ChangeLog:1.3310
--- pnet/ChangeLog:1.3309       Sun Mar 19 15:22:37 2006
+++ pnet/ChangeLog      Sat Mar 25 07:06:54 2006
@@ -1,3 +1,8 @@
+2006-03-25  Klaus Treichel  <address@hidden>
+
+       * enjine/jitc_obj.c: Fix a bug in ILJITCoder_CastClass that caused a
+       segfault in IsInst when the object to cast was null.
+
 2006-03-19  Rainer Größlinger  <address@hidden>
 
        * libgc/Makefile.am, libgc/Makefile.direct, libgc/Makefile.in,
Index: pnet/engine/jitc_obj.c
diff -u pnet/engine/jitc_obj.c:1.13 pnet/engine/jitc_obj.c:1.14
--- pnet/engine/jitc_obj.c:1.13 Wed Mar  8 21:03:52 2006
+++ pnet/engine/jitc_obj.c      Sat Mar 25 07:06:54 2006
@@ -183,7 +183,13 @@
        jit_label_t label = jit_label_undefined;
        ILJitValue args[3];
        ILJitValue returnValue;
+       ILJitValue result = jit_value_create(jitCoder->jitFunction,
+                                                                               
 _IL_JIT_TYPE_VPTR);
 
+       if(!throwException)
+       {
+               jit_insn_store(jitCoder->jitFunction, result, object);
+       }
        jit_insn_branch_if_not(jitCoder->jitFunction, object, &label);
        if(ILClass_IsInterface(classInfo))
        {
@@ -215,19 +221,14 @@
        }
        else
        {
-               jit_label_t label1 = jit_label_undefined;
-               ILJitValue temp = jit_value_create(jitCoder->jitFunction, 
_IL_JIT_TYPE_VPTR);
                ILJitValue nullPointer = 
                                
jit_value_create_nint_constant(jitCoder->jitFunction,
                                                                                
           _IL_JIT_TYPE_VPTR,
                                                                                
           (jit_nint)0);
        
-               jit_insn_branch_if(jitCoder->jitFunction, returnValue, &label1);
-               jit_insn_store(jitCoder->jitFunction, temp, nullPointer);
-               jit_insn_branch(jitCoder->jitFunction, &label);
-               jit_insn_label(jitCoder->jitFunction, &label1);
-               jit_insn_store(jitCoder->jitFunction, temp, 
jitCoder->jitStack[jitCoder->stackTop - 1]);
-               jitCoder->jitStack[jitCoder->stackTop - 1] = temp;
+               jit_insn_branch_if(jitCoder->jitFunction, returnValue, &label);
+               jit_insn_store(jitCoder->jitFunction, result, nullPointer);
+               jitCoder->jitStack[jitCoder->stackTop - 1] = result;
        }
        jit_insn_label(jitCoder->jitFunction, &label);
 }




reply via email to

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