[Vm-dev] [commit][3342] CogVM source as per VMMaker.oscog-eem.1303
commits at squeakvm.org
commits at squeakvm.org
Fri May 15 02:16:24 UTC 2015
Revision: 3342
Author: eliot
Date: 2015-05-14 19:16:22 -0700 (Thu, 14 May 2015)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1303
Fix the regression with #== in the StackToRegisterMappingCogit;
a spilled constant must still be dropped from the stack.
Mark the genEnsure... stubs in CogObjRep as inline
and fix a signature to eliminate warnings.
Modified Paths:
--------------
branches/Cog/nsspursrc/vm/cogit.h
branches/Cog/nsspursrc/vm/cogitARMv5.c
branches/Cog/nsspursrc/vm/cogitIA32.c
branches/Cog/spursistasrc/vm/cogit.h
branches/Cog/spursrc/vm/cogit.h
branches/Cog/spursrc/vm/cogitARMv5.c
branches/Cog/spursrc/vm/cogitIA32.c
branches/Cog/src/vm/cogit.h
branches/Cog/src/vm/cogitARMv5.c
branches/Cog/src/vm/cogitIA32.c
Property Changed:
----------------
branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h 2015-05-14 22:34:53 UTC (rev 3341)
+++ branches/Cog/nsspursrc/vm/cogit.h 2015-05-15 02:16:22 UTC (rev 3342)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ CCodeGenerator VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
*/
Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitARMv5.c 2015-05-14 22:34:53 UTC (rev 3341)
+++ branches/Cog/nsspursrc/vm/cogitARMv5.c 2015-05-15 02:16:22 UTC (rev 3342)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ CCodeGenerator VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -21686,7 +21686,7 @@
sqInt constant2;
AbstractInstruction *jumpEqual;
AbstractInstruction *jumpNotEqual;
- AbstractInstruction * label;
+ AbstractInstruction *label;
/* begin Label */
label = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
@@ -23943,6 +23943,10 @@
else {
argReg1 = allocateRegForStackEntryAtnotConflictingWith(0, 0);
popToReg(ssTop(), argReg1);
+ if (((ssValue(1))->spilled)) {
+ /* begin AddCq:R: */
+ genoperandoperand(AddCqR, BytesPerWord, SPReg);
+ }
}
}
else {
Modified: branches/Cog/nsspursrc/vm/cogitIA32.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitIA32.c 2015-05-14 22:34:53 UTC (rev 3341)
+++ branches/Cog/nsspursrc/vm/cogitIA32.c 2015-05-15 02:16:22 UTC (rev 3342)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ CCodeGenerator VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -20444,7 +20444,7 @@
sqInt constant2;
AbstractInstruction *jumpEqual;
AbstractInstruction *jumpNotEqual;
- AbstractInstruction * label;
+ AbstractInstruction *label;
/* begin Label */
label = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
@@ -22699,6 +22699,10 @@
else {
argReg1 = allocateRegForStackEntryAtnotConflictingWith(0, 0);
popToReg(ssTop(), argReg1);
+ if (((ssValue(1))->spilled)) {
+ /* begin AddCq:R: */
+ genoperandoperand(AddCqR, BytesPerWord, SPReg);
+ }
}
}
else {
Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
- Thu May 14 15:34:28 PDT 2015
+ Thu May 14 19:15:55 PDT 2015
Modified: branches/Cog/spursistasrc/vm/cogit.h
===================================================================
--- branches/Cog/spursistasrc/vm/cogit.h 2015-05-14 22:34:53 UTC (rev 3341)
+++ branches/Cog/spursistasrc/vm/cogit.h 2015-05-15 02:16:22 UTC (rev 3342)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ CCodeGenerator VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
*/
Modified: branches/Cog/spursrc/vm/cogit.h
===================================================================
--- branches/Cog/spursrc/vm/cogit.h 2015-05-14 22:34:53 UTC (rev 3341)
+++ branches/Cog/spursrc/vm/cogit.h 2015-05-15 02:16:22 UTC (rev 3342)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ CCodeGenerator VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
*/
Modified: branches/Cog/spursrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/spursrc/vm/cogitARMv5.c 2015-05-14 22:34:53 UTC (rev 3341)
+++ branches/Cog/spursrc/vm/cogitARMv5.c 2015-05-15 02:16:22 UTC (rev 3342)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ CCodeGenerator VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -19634,7 +19634,7 @@
sqInt constant2;
AbstractInstruction *jumpEqual;
AbstractInstruction *jumpNotEqual;
- AbstractInstruction * label;
+ AbstractInstruction *label;
/* begin Label */
label = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
@@ -21693,6 +21693,10 @@
else {
argReg1 = allocateRegForStackEntryAtnotConflictingWith(0, 0);
popToReg(ssTop(), argReg1);
+ if (((ssValue(1))->spilled)) {
+ /* begin AddCq:R: */
+ genoperandoperand(AddCqR, BytesPerWord, SPReg);
+ }
}
}
else {
Modified: branches/Cog/spursrc/vm/cogitIA32.c
===================================================================
--- branches/Cog/spursrc/vm/cogitIA32.c 2015-05-14 22:34:53 UTC (rev 3341)
+++ branches/Cog/spursrc/vm/cogitIA32.c 2015-05-15 02:16:22 UTC (rev 3342)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ CCodeGenerator VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -18381,7 +18381,7 @@
sqInt constant2;
AbstractInstruction *jumpEqual;
AbstractInstruction *jumpNotEqual;
- AbstractInstruction * label;
+ AbstractInstruction *label;
/* begin Label */
label = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
@@ -20438,6 +20438,10 @@
else {
argReg1 = allocateRegForStackEntryAtnotConflictingWith(0, 0);
popToReg(ssTop(), argReg1);
+ if (((ssValue(1))->spilled)) {
+ /* begin AddCq:R: */
+ genoperandoperand(AddCqR, BytesPerWord, SPReg);
+ }
}
}
else {
Modified: branches/Cog/src/vm/cogit.h
===================================================================
--- branches/Cog/src/vm/cogit.h 2015-05-14 22:34:53 UTC (rev 3341)
+++ branches/Cog/src/vm/cogit.h 2015-05-15 02:16:22 UTC (rev 3342)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ CCodeGenerator VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
*/
Modified: branches/Cog/src/vm/cogitARMv5.c
===================================================================
--- branches/Cog/src/vm/cogitARMv5.c 2015-05-14 22:34:53 UTC (rev 3341)
+++ branches/Cog/src/vm/cogitARMv5.c 2015-05-15 02:16:22 UTC (rev 3342)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ CCodeGenerator VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -799,9 +799,6 @@
static sqInt checkValidObjectReference(sqInt anOop) NoDbgRegParms;
static sqInt createsClosuresInline(void);
static AbstractInstruction * genCmpClassFloatCompactIndexR(sqInt reg) NoDbgRegParms;
-static sqInt genEnsureObjInRegNotForwardedscratchReg(sqInt reg, sqInt scratch) NoDbgRegParms;
-static sqInt genEnsureOopInRegNotForwardedscratchReg(sqInt reg, sqInt scratch) NoDbgRegParms;
-static sqInt genEnsureOopInRegNotForwardedscratchRegjumpBackTo(sqInt reg, sqInt scratch, sqInt instruction) NoDbgRegParms;
static sqInt genInnerPrimitiveAsCharacterinReg(sqInt retNOffset, sqInt reg) NoDbgRegParms;
static sqInt genInnerPrimitiveAtPut(sqInt retNoffset) NoDbgRegParms;
static sqInt genInnerPrimitiveCharacterValue(sqInt retNOffset) NoDbgRegParms;
@@ -13963,36 +13960,6 @@
}
-/* Make sure that the object in reg is not forwarded. By default there is
- nothing to do. Subclasses for memory managers that forward will override. */
-
-static sqInt
-genEnsureObjInRegNotForwardedscratchReg(sqInt reg, sqInt scratch)
-{
- return 0;
-}
-
-
-/* Make sure that the oop in reg is not forwarded. By default there is
- nothing to do. Subclasses for memory managers that forward will override. */
-
-static sqInt
-genEnsureOopInRegNotForwardedscratchReg(sqInt reg, sqInt scratch)
-{
- return 0;
-}
-
-
-/* Make sure that the oop in reg is not forwarded. By default there is
- nothing to do. Subclasses for memory managers that forward will override. */
-
-static sqInt
-genEnsureOopInRegNotForwardedscratchRegjumpBackTo(sqInt reg, sqInt scratch, sqInt instruction)
-{
- return 0;
-}
-
-
/* subclasses override if they can */
static sqInt
@@ -17765,7 +17732,7 @@
sqInt constant2;
AbstractInstruction *jumpEqual;
AbstractInstruction *jumpNotEqual;
- AbstractInstruction * label;
+ AbstractInstruction *label;
/* begin Label */
label = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
@@ -17802,10 +17769,10 @@
/* begin JumpZero: */
jumpEqual = genoperand(JumpZero, ((sqInt)0));
if (!argIsConstant) {
- genEnsureOopInRegNotForwardedscratchRegjumpBackTo(argReg, TempReg, label);
+ 0;
}
if (!rcvrIsConstant) {
- genEnsureOopInRegNotForwardedscratchRegjumpBackTo(rcvrReg, TempReg, label);
+ 0;
}
/* begin genMoveFalseR: */
/* begin genMoveConstant:R: */
@@ -18138,7 +18105,7 @@
l1: /* end annotationForSendTable: */;
if ((annotation == IsSuperSend)
|| (0)) {
- genEnsureOopInRegNotForwardedscratchReg(ReceiverResultReg, TempReg);
+ 0;
}
if (numArgs > 2) {
/* begin MoveCq:R: */
@@ -19005,7 +18972,7 @@
/* begin MoveCq:R: */
genoperandoperand(MoveCqR, association, TempReg);
}
- genEnsureObjInRegNotForwardedscratchReg(TempReg, freeReg);
+ 0;
genLoadSlotsourceRegdestReg(ValueIndex, TempReg, freeReg);
ssPushRegister(freeReg);
return 0;
@@ -19730,7 +19697,7 @@
/* begin MoveCq:R: */
genoperandoperand(MoveCqR, association, assocReg);
}
- genEnsureObjInRegNotForwardedscratchReg(assocReg, TempReg);
+ 0;
ssStorePoptoReg(popBoolean, TempReg);
if (traceStores > 0) {
if (!(assocReg == ReceiverResultReg)) {
@@ -19759,7 +19726,7 @@
/* begin MoveCq:R: */
genoperandoperand(MoveCqR, association, ReceiverResultReg);
}
- genEnsureObjInRegNotForwardedscratchReg(ReceiverResultReg, TempReg);
+ 0;
if (traceStores > 0) {
/* begin MoveR:R: */
genoperandoperand(MoveRR, topReg, TempReg);
@@ -20137,6 +20104,10 @@
else {
argReg1 = allocateRegForStackEntryAtnotConflictingWith(0, 0);
popToReg(ssTop(), argReg1);
+ if (((ssValue(1))->spilled)) {
+ /* begin AddCq:R: */
+ genoperandoperand(AddCqR, BytesPerWord, SPReg);
+ }
}
}
else {
Modified: branches/Cog/src/vm/cogitIA32.c
===================================================================
--- branches/Cog/src/vm/cogitIA32.c 2015-05-14 22:34:53 UTC (rev 3341)
+++ branches/Cog/src/vm/cogitIA32.c 2015-05-15 02:16:22 UTC (rev 3342)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ CCodeGenerator VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1301 uuid: ce7e12a9-6ef4-412e-942d-8b9d3b3b2980 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1303 uuid: d796217a-dcf4-47eb-9a63-579a7e69a7fa " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -741,9 +741,6 @@
static sqInt checkValidObjectReference(sqInt anOop) NoDbgRegParms;
static sqInt createsClosuresInline(void);
static AbstractInstruction * genCmpClassFloatCompactIndexR(sqInt reg) NoDbgRegParms;
-static sqInt genEnsureObjInRegNotForwardedscratchReg(sqInt reg, sqInt scratch) NoDbgRegParms;
-static sqInt genEnsureOopInRegNotForwardedscratchReg(sqInt reg, sqInt scratch) NoDbgRegParms;
-static sqInt genEnsureOopInRegNotForwardedscratchRegjumpBackTo(sqInt reg, sqInt scratch, sqInt instruction) NoDbgRegParms;
static sqInt genInnerPrimitiveAsCharacterinReg(sqInt retNOffset, sqInt reg) NoDbgRegParms;
static sqInt genInnerPrimitiveAtPut(sqInt retNoffset) NoDbgRegParms;
static sqInt genInnerPrimitiveCharacterValue(sqInt retNOffset) NoDbgRegParms;
@@ -12727,36 +12724,6 @@
}
-/* Make sure that the object in reg is not forwarded. By default there is
- nothing to do. Subclasses for memory managers that forward will override. */
-
-static sqInt
-genEnsureObjInRegNotForwardedscratchReg(sqInt reg, sqInt scratch)
-{
- return 0;
-}
-
-
-/* Make sure that the oop in reg is not forwarded. By default there is
- nothing to do. Subclasses for memory managers that forward will override. */
-
-static sqInt
-genEnsureOopInRegNotForwardedscratchReg(sqInt reg, sqInt scratch)
-{
- return 0;
-}
-
-
-/* Make sure that the oop in reg is not forwarded. By default there is
- nothing to do. Subclasses for memory managers that forward will override. */
-
-static sqInt
-genEnsureOopInRegNotForwardedscratchRegjumpBackTo(sqInt reg, sqInt scratch, sqInt instruction)
-{
- return 0;
-}
-
-
/* subclasses override if they can */
static sqInt
@@ -16526,7 +16493,7 @@
sqInt constant2;
AbstractInstruction *jumpEqual;
AbstractInstruction *jumpNotEqual;
- AbstractInstruction * label;
+ AbstractInstruction *label;
/* begin Label */
label = genoperandoperand(Label, (labelCounter += 1), bytecodePC);
@@ -16563,10 +16530,10 @@
/* begin JumpZero: */
jumpEqual = genoperand(JumpZero, ((sqInt)0));
if (!argIsConstant) {
- genEnsureOopInRegNotForwardedscratchRegjumpBackTo(argReg, TempReg, label);
+ 0;
}
if (!rcvrIsConstant) {
- genEnsureOopInRegNotForwardedscratchRegjumpBackTo(rcvrReg, TempReg, label);
+ 0;
}
/* begin genMoveFalseR: */
/* begin genMoveConstant:R: */
@@ -16898,7 +16865,7 @@
l1: /* end annotationForSendTable: */;
if ((annotation == IsSuperSend)
|| (0)) {
- genEnsureOopInRegNotForwardedscratchReg(ReceiverResultReg, TempReg);
+ 0;
}
if (numArgs > 2) {
/* begin MoveCq:R: */
@@ -17763,7 +17730,7 @@
/* begin MoveCq:R: */
genoperandoperand(MoveCqR, association, TempReg);
}
- genEnsureObjInRegNotForwardedscratchReg(TempReg, freeReg);
+ 0;
genLoadSlotsourceRegdestReg(ValueIndex, TempReg, freeReg);
ssPushRegister(freeReg);
return 0;
@@ -18489,7 +18456,7 @@
/* begin MoveCq:R: */
genoperandoperand(MoveCqR, association, assocReg);
}
- genEnsureObjInRegNotForwardedscratchReg(assocReg, TempReg);
+ 0;
ssStorePoptoReg(popBoolean, TempReg);
if (traceStores > 0) {
if (!(assocReg == ReceiverResultReg)) {
@@ -18518,7 +18485,7 @@
/* begin MoveCq:R: */
genoperandoperand(MoveCqR, association, ReceiverResultReg);
}
- genEnsureObjInRegNotForwardedscratchReg(ReceiverResultReg, TempReg);
+ 0;
if (traceStores > 0) {
/* begin MoveR:R: */
genoperandoperand(MoveRR, topReg, TempReg);
@@ -18881,6 +18848,10 @@
else {
argReg1 = allocateRegForStackEntryAtnotConflictingWith(0, 0);
popToReg(ssTop(), argReg1);
+ if (((ssValue(1))->spilled)) {
+ /* begin AddCq:R: */
+ genoperandoperand(AddCqR, BytesPerWord, SPReg);
+ }
}
}
else {
More information about the Vm-dev
mailing list