CVSROOT: /cvsroot/dotgnu-pnet
Module name: pnet
Branch:
Changes by: Klaus Treichel <[EMAIL PROTECTED]> 06/01/12 20:23:07
Modified files:
. : ChangeLog
engine : jitc_obj.c
Log message:
Fix JITCoder_CastClass.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/ChangeLog.diff?tr1=1.3273&tr2=1.3274&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/dotgnu-pnet/pnet/engine/jitc_obj.c.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
Patches:
Index: pnet/ChangeLog
diff -u pnet/ChangeLog:1.3273 pnet/ChangeLog:1.3274
--- pnet/ChangeLog:1.3273 Mon Jan 9 20:49:46 2006
+++ pnet/ChangeLog Thu Jan 12 20:23:07 2006
@@ -1,3 +1,7 @@
+2006-01-12 Klaus Treichel <[EMAIL PROTECTED]>
+
+ * engine/jitc_obj.c: Fix JITCoder_CastClass.
+
2006-01-09 Klaus Treichel <[EMAIL PROTECTED]>
* engine/engine.h: Add jitVtable (vtable pointers for jit functions) and
Index: pnet/engine/jitc_obj.c
diff -u pnet/engine/jitc_obj.c:1.3 pnet/engine/jitc_obj.c:1.4
--- pnet/engine/jitc_obj.c:1.3 Mon Jan 9 20:49:47 2006
+++ pnet/engine/jitc_obj.c Thu Jan 12 20:23:07 2006
@@ -82,19 +82,6 @@
ILRuntimeClassImplements,
_ILJitSignature_ILRuntimeClassImplements,
args, 2, 0);
- jit_insn_branch_if(jitCoder->jitFunction, returnValue, &label);
- if(throwException)
- {
- /* TODO: Throw an InvalidCastException here. */
- }
- else
- {
- ILJitValue nullPointer =
-
jit_value_create_nint_constant(jitCoder->jitFunction,
-
_IL_JIT_TYPE_VPTR,
-
(jit_nint)0);
- jitCoder->jitStack[jitCoder->stackTop - 1] =
nullPointer;
- }
}
else
{
@@ -105,20 +92,28 @@
ILRuntimeCanCastClass,
_ILJitSignature_ILRuntimeCanCastClass,
args, 3, 0);
+ }
+ if(throwException)
+ {
jit_insn_branch_if(jitCoder->jitFunction, returnValue, &label);
- if(throwException)
- {
- /* TODO: Throw an InvalidCastException here. */
-
- }
- else
- {
- ILJitValue nullPointer =
-
jit_value_create_nint_constant(jitCoder->jitFunction,
-
_IL_JIT_TYPE_VPTR,
-
(jit_nint)0);
- jitCoder->jitStack[jitCoder->stackTop - 1] =
nullPointer;
- }
+ /* TODO: Throw an InvalidCastException here. */
+
+ }
+ 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_label(jitCoder->jitFunction, &label);
}
_______________________________________________
dotgnu-pnet-commits mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/dotgnu-pnet-commits