[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Dotgnu-pnet-commits] CVS: pnet/engine cvmc.c,1.33,1.34 cvmc_call.c,1.20
From: |
Rhys Weatherley <address@hidden> |
Subject: |
[Dotgnu-pnet-commits] CVS: pnet/engine cvmc.c,1.33,1.34 cvmc_call.c,1.20,1.21 null_coder.c,1.13,1.14 verify_call.c,1.27,1.28 |
Date: |
Thu, 14 Nov 2002 20:37:44 -0500 |
Update of /cvsroot/dotgnu-pnet/pnet/engine
In directory subversions:/tmp/cvs-serv8950/engine
Modified Files:
cvmc.c cvmc_call.c null_coder.c verify_call.c
Log Message:
Use "callvirt" instead of "call" to call non-virtual instance methods,
so that runtime null pointer checks happen automatically.
Index: cvmc.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/cvmc.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -C2 -r1.33 -r1.34
*** cvmc.c 24 Jun 2002 05:54:37 -0000 1.33
--- cvmc.c 15 Nov 2002 01:37:42 -0000 1.34
***************
*** 432,435 ****
--- 432,436 ----
CVMCoder_PackVarArgs,
CVMCoder_ValueCtorArgs,
+ CVMCoder_CheckCallNull,
CVMCoder_CallMethod,
CVMCoder_CallIndirect,
Index: cvmc_call.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/cvmc_call.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -r1.20 -r1.21
*** cvmc_call.c 24 Jun 2002 05:54:37 -0000 1.20
--- cvmc_call.c 15 Nov 2002 01:37:42 -0000 1.21
***************
*** 116,119 ****
--- 116,134 ----
}
+ static void CVMCoder_CheckCallNull(ILCoder *coder, ILEngineStackItem *args,
+ ILUInt32 numArgs)
+ {
+ ILUInt32 size = ComputeStackSize(coder, args, numArgs);
+ if(size == 1)
+ {
+ CVM_OUT_NONE(COP_CKNULL);
+ }
+ else
+ {
+ --size;
+ CVM_OUT_WIDE(COP_CKNULL_N, size);
+ }
+ }
+
static void CVMCoder_CallMethod(ILCoder *coder, ILEngineStackItem *args,
ILUInt32 numArgs,
Index: null_coder.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/null_coder.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** null_coder.c 24 Jun 2002 05:54:37 -0000 1.13
--- null_coder.c 15 Nov 2002 01:37:42 -0000 1.14
***************
*** 270,273 ****
--- 270,277 ----
{
}
+ static void Coder_CheckCallNull(ILCoder *coder, ILEngineStackItem *args,
+ ILUInt32 numArgs)
+ {
+ }
static void Coder_CallMethod(ILCoder *coder, ILEngineStackItem *args,
ILUInt32 numArgs,
ILEngineStackItem *returnItem,
***************
*** 435,438 ****
--- 439,443 ----
Coder_PackVarArgs,
Coder_ValueCtorArgs,
+ Coder_CheckCallNull,
Coder_CallMethod,
Coder_CallIndirect,
Index: verify_call.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/verify_call.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -r1.27 -r1.28
*** verify_call.c 16 Sep 2002 02:17:22 -0000 1.27
--- verify_call.c 15 Nov 2002 01:37:42 -0000 1.28
***************
*** 1195,1198 ****
--- 1195,1207 ----
!ILCoderCallInlineable(coder,
inlineType))
{
+ if(numParams > 0 &&
!ILMethod_IsStatic(methodInfo) &&
+ (stack + stackSize -
numParams)->engineType
+ ==
ILEngineType_O)
+ {
+ /* Check the first
parameter against "null" */
+ ILCoderCheckCallNull
+ (coder, stack +
stackSize - numParams,
+
(ILUInt32)numParams);
+ }
ILCoderCallMethod(coder, stack
+ stackSize - numParams,
(ILUInt32)numParams,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] CVS: pnet/engine cvmc.c,1.33,1.34 cvmc_call.c,1.20,1.21 null_coder.c,1.13,1.14 verify_call.c,1.27,1.28,
Rhys Weatherley <address@hidden> <=