[Vm-dev] [commit][2939] CogVM source as per VMMaker.oscog-eem.747
commits at squeakvm.org
commits at squeakvm.org
Mon Jun 2 15:09:53 UTC 2014
Revision: 2939
Author: eliot
Date: 2014-06-02 08:09:52 -0700 (Mon, 02 Jun 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.747
In the indirection vector initialization peephole check that the store temp index
matches the indirect temp store index and accept long store temp bytecodes.
Modified Paths:
--------------
branches/Cog/nscogsrc/vm/cogit.c
branches/Cog/nscogsrc/vm/cogit.h
branches/Cog/nscogsrc/vm/cogmethod.h
branches/Cog/nsspursrc/vm/cogit.c
branches/Cog/nsspursrc/vm/cogit.h
branches/Cog/nsspursrc/vm/cogmethod.h
branches/Cog/sistasrc/vm/cogit.c
branches/Cog/sistasrc/vm/cogit.h
branches/Cog/sistasrc/vm/cogmethod.h
branches/Cog/spursistasrc/vm/cogit.c
branches/Cog/spursistasrc/vm/cogit.h
branches/Cog/spursistasrc/vm/cogmethod.h
branches/Cog/spursrc/vm/cogit.c
branches/Cog/spursrc/vm/cogit.h
branches/Cog/spursrc/vm/cogmethod.h
branches/Cog/src/vm/cogit.c
branches/Cog/src/vm/cogit.h
branches/Cog/src/vm/cogmethod.h
Property Changed:
----------------
branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/nscogsrc/vm/cogit.c 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ StackToRegisterMappingCogit VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72 " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -21593,15 +21593,18 @@
}
-/* Try and collapse
+/* If the sequence of bytecodes is
push: (Array new: 1)
popIntoTemp: tempIndex
pushConstant: const or pushTemp: n
popIntoTemp: 0 inVectorAt: tempIndex
- into
- tempAt: tempIndex put: {const}.
+ collapse this into
+ tempAt: tempIndex put: {const or temp}
+ and answer true, otherwise answer false.
One might think that we should look for a sequence of more than
- one pushes and pops but this is extremely rare. */
+ one pushes and pops but this is extremely rare.
+ Exclude pushRcvr: n to avoid potential complications with context inst
+ vars. */
static sqInt
tryCollapseTempVectorInitializationOfSize(sqInt slots)
@@ -21609,8 +21612,10 @@
BytecodeDescriptor *pushArrayDesc;
BytecodeDescriptor *pushValueDesc;
sqInt reg;
+ sqInt remoteTempIndex;
BytecodeDescriptor *storeArrayDesc;
BytecodeDescriptor *storeValueDesc;
+ sqInt tempIndex;
if (slots != 1) {
return 0;
@@ -21618,17 +21623,25 @@
pushArrayDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(bytecodePC, methodObj)));
assert(((pushArrayDesc->generator)) == genPushNewArrayBytecode);
storeArrayDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(bytecodePC + ((pushArrayDesc->numBytes)), methodObj)));
- if (((storeArrayDesc->generator)) != genStoreAndPopTemporaryVariableBytecode) {
- return 0;
+ if (((storeArrayDesc->generator)) == genStoreAndPopTemporaryVariableBytecode) {
+ tempIndex = (fetchByteofObject(bytecodePC + ((pushArrayDesc->numBytes)), methodObj)) & 7;
}
+ else {
+ if (!(((storeArrayDesc->generator)) == genLongStoreAndPopTemporaryVariableBytecode)) {
+ return 0;
+ }
+ tempIndex = fetchByteofObject((bytecodePC + ((pushArrayDesc->numBytes))) + 1, methodObj);
+ }
pushValueDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes)), methodObj)));
- if ((((pushValueDesc->generator)) != genPushLiteralConstantBytecode)
- && ((((pushValueDesc->generator)) != genPushQuickIntegerConstantBytecode)
- && (((pushValueDesc->generator)) != genPushTemporaryVariableBytecode))) {
+ if (!((((pushValueDesc->generator)) == genPushLiteralConstantBytecode)
+ || ((((pushValueDesc->generator)) == genPushQuickIntegerConstantBytecode)
+ || (((pushValueDesc->generator)) == genPushTemporaryVariableBytecode)))) {
return 0;
}
storeValueDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes))) + ((pushValueDesc->numBytes)), methodObj)));
- if (((storeValueDesc->generator)) != genStoreAndPopRemoteTempLongBytecode) {
+ remoteTempIndex = fetchByteofObject((((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes))) + ((pushValueDesc->numBytes))) + 2, methodObj);
+ if (!((((storeValueDesc->generator)) == genStoreAndPopRemoteTempLongBytecode)
+ && (tempIndex == remoteTempIndex))) {
return 0;
}
genNewArrayOfSizeinitialized(1, 0);
Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/nscogsrc/vm/cogit.h 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
Modified: branches/Cog/nscogsrc/vm/cogmethod.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogmethod.h 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/nscogsrc/vm/cogmethod.h 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
typedef struct {
Modified: branches/Cog/nsspursrc/vm/cogit.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.c 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/nsspursrc/vm/cogit.c 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ StackToRegisterMappingCogit VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72 " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -22958,15 +22958,18 @@
}
-/* Try and collapse
+/* If the sequence of bytecodes is
push: (Array new: 1)
popIntoTemp: tempIndex
pushConstant: const or pushTemp: n
popIntoTemp: 0 inVectorAt: tempIndex
- into
- tempAt: tempIndex put: {const}.
+ collapse this into
+ tempAt: tempIndex put: {const or temp}
+ and answer true, otherwise answer false.
One might think that we should look for a sequence of more than
- one pushes and pops but this is extremely rare. */
+ one pushes and pops but this is extremely rare.
+ Exclude pushRcvr: n to avoid potential complications with context inst
+ vars. */
static sqInt
tryCollapseTempVectorInitializationOfSize(sqInt slots)
@@ -22974,8 +22977,10 @@
BytecodeDescriptor *pushArrayDesc;
BytecodeDescriptor *pushValueDesc;
sqInt reg;
+ sqInt remoteTempIndex;
BytecodeDescriptor *storeArrayDesc;
BytecodeDescriptor *storeValueDesc;
+ sqInt tempIndex;
if (slots != 1) {
return 0;
@@ -22983,17 +22988,25 @@
pushArrayDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(bytecodePC, methodObj)));
assert(((pushArrayDesc->generator)) == genPushNewArrayBytecode);
storeArrayDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(bytecodePC + ((pushArrayDesc->numBytes)), methodObj)));
- if (((storeArrayDesc->generator)) != genStoreAndPopTemporaryVariableBytecode) {
- return 0;
+ if (((storeArrayDesc->generator)) == genStoreAndPopTemporaryVariableBytecode) {
+ tempIndex = (fetchByteofObject(bytecodePC + ((pushArrayDesc->numBytes)), methodObj)) & 7;
}
+ else {
+ if (!(((storeArrayDesc->generator)) == genLongStoreAndPopTemporaryVariableBytecode)) {
+ return 0;
+ }
+ tempIndex = fetchByteofObject((bytecodePC + ((pushArrayDesc->numBytes))) + 1, methodObj);
+ }
pushValueDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes)), methodObj)));
- if ((((pushValueDesc->generator)) != genPushLiteralConstantBytecode)
- && ((((pushValueDesc->generator)) != genPushQuickIntegerConstantBytecode)
- && (((pushValueDesc->generator)) != genPushTemporaryVariableBytecode))) {
+ if (!((((pushValueDesc->generator)) == genPushLiteralConstantBytecode)
+ || ((((pushValueDesc->generator)) == genPushQuickIntegerConstantBytecode)
+ || (((pushValueDesc->generator)) == genPushTemporaryVariableBytecode)))) {
return 0;
}
storeValueDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes))) + ((pushValueDesc->numBytes)), methodObj)));
- if (((storeValueDesc->generator)) != genStoreAndPopRemoteTempLongBytecode) {
+ remoteTempIndex = fetchByteofObject((((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes))) + ((pushValueDesc->numBytes))) + 2, methodObj);
+ if (!((((storeValueDesc->generator)) == genStoreAndPopRemoteTempLongBytecode)
+ && (tempIndex == remoteTempIndex))) {
return 0;
}
genNewArrayOfSizeinitialized(1, 0);
Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/nsspursrc/vm/cogit.h 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
Modified: branches/Cog/nsspursrc/vm/cogmethod.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogmethod.h 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/nsspursrc/vm/cogmethod.h 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
typedef struct {
Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
- Sun Jun 1 18:10:48 PDT 2014
+ Mon Jun 2 08:09:12 PDT 2014
Modified: branches/Cog/sistasrc/vm/cogit.c
===================================================================
--- branches/Cog/sistasrc/vm/cogit.c 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/sistasrc/vm/cogit.c 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
from
- SistaStackToRegisterMappingCogit VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ SistaStackToRegisterMappingCogit VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
-static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9 " __DATE__ ;
+static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72 " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -670,6 +670,7 @@
static sqInt genLoadStackPointers(AbstractInstruction * self_in_genLoadStackPointers) NoDbgRegParms;
static sqInt genLongJumpIfFalse(void);
static sqInt genLongJumpIfTrue(void);
+static sqInt genLongStoreAndPopTemporaryVariableBytecode(void);
static sqInt genLongUnconditionalBackwardJump(void);
static sqInt genLongUnconditionalForwardJump(void);
static sqInt genMarshalledSendSupernumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
@@ -12710,7 +12711,16 @@
return genJumpIfto(trueObject(), target);
}
+
+/* 237 11101101 i i i i i i i i Pop and Store Temporary Variable #iiiiiiii */
+
static sqInt
+genLongStoreAndPopTemporaryVariableBytecode(void)
+{
+ return genStorePopTemporaryVariable(1, byte1);
+}
+
+static sqInt
genLongUnconditionalBackwardJump(void)
{
sqInt distance;
@@ -20847,15 +20857,18 @@
}
-/* Try and collapse
+/* If the sequence of bytecodes is
push: (Array new: 1)
popIntoTemp: tempIndex
pushConstant: const or pushTemp: n
popIntoTemp: 0 inVectorAt: tempIndex
- into
- tempAt: tempIndex put: {const}.
+ collapse this into
+ tempAt: tempIndex put: {const or temp}
+ and answer true, otherwise answer false.
One might think that we should look for a sequence of more than
- one pushes and pops but this is extremely rare. */
+ one pushes and pops but this is extremely rare.
+ Exclude pushRcvr: n to avoid potential complications with context inst
+ vars. */
static sqInt
tryCollapseTempVectorInitializationOfSize(sqInt slots)
@@ -20863,8 +20876,10 @@
BytecodeDescriptor *pushArrayDesc;
BytecodeDescriptor *pushValueDesc;
sqInt reg;
+ sqInt remoteTempIndex;
BytecodeDescriptor *storeArrayDesc;
BytecodeDescriptor *storeValueDesc;
+ sqInt tempIndex;
if (slots != 1) {
return 0;
@@ -20872,17 +20887,25 @@
pushArrayDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(bytecodePC, methodObj)));
assert(((pushArrayDesc->generator)) == genPushNewArrayBytecode);
storeArrayDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(bytecodePC + ((pushArrayDesc->numBytes)), methodObj)));
- if (((storeArrayDesc->generator)) != genStoreAndPopTemporaryVariableBytecode) {
- return 0;
+ if (((storeArrayDesc->generator)) == genStoreAndPopTemporaryVariableBytecode) {
+ tempIndex = (fetchByteofObject(bytecodePC + ((pushArrayDesc->numBytes)), methodObj)) & 7;
}
+ else {
+ if (!(((storeArrayDesc->generator)) == genLongStoreAndPopTemporaryVariableBytecode)) {
+ return 0;
+ }
+ tempIndex = fetchByteofObject((bytecodePC + ((pushArrayDesc->numBytes))) + 1, methodObj);
+ }
pushValueDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes)), methodObj)));
- if ((((pushValueDesc->generator)) != genPushLiteralConstantBytecode)
- && ((((pushValueDesc->generator)) != genPushQuickIntegerConstantBytecode)
- && (((pushValueDesc->generator)) != genPushTemporaryVariableBytecode))) {
+ if (!((((pushValueDesc->generator)) == genPushLiteralConstantBytecode)
+ || ((((pushValueDesc->generator)) == genPushQuickIntegerConstantBytecode)
+ || (((pushValueDesc->generator)) == genPushTemporaryVariableBytecode)))) {
return 0;
}
storeValueDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes))) + ((pushValueDesc->numBytes)), methodObj)));
- if (((storeValueDesc->generator)) != genStoreAndPopRemoteTempLongBytecode) {
+ remoteTempIndex = fetchByteofObject((((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes))) + ((pushValueDesc->numBytes))) + 2, methodObj);
+ if (!((((storeValueDesc->generator)) == genStoreAndPopRemoteTempLongBytecode)
+ && (tempIndex == remoteTempIndex))) {
return 0;
}
genNewArrayOfSizeinitialized(1, 0);
Modified: branches/Cog/sistasrc/vm/cogit.h
===================================================================
--- branches/Cog/sistasrc/vm/cogit.h 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/sistasrc/vm/cogit.h 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
Modified: branches/Cog/sistasrc/vm/cogmethod.h
===================================================================
--- branches/Cog/sistasrc/vm/cogmethod.h 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/sistasrc/vm/cogmethod.h 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
typedef struct {
Modified: branches/Cog/spursistasrc/vm/cogit.c
===================================================================
--- branches/Cog/spursistasrc/vm/cogit.c 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/spursistasrc/vm/cogit.c 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
from
- SistaStackToRegisterMappingCogit VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ SistaStackToRegisterMappingCogit VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
-static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9 " __DATE__ ;
+static char __buildInfo[] = "SistaStackToRegisterMappingCogit VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72 " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -674,6 +674,7 @@
static sqInt genLoadStackPointers(AbstractInstruction * self_in_genLoadStackPointers) NoDbgRegParms;
static sqInt genLongJumpIfFalse(void);
static sqInt genLongJumpIfTrue(void);
+static sqInt genLongStoreAndPopTemporaryVariableBytecode(void);
static sqInt genLongUnconditionalBackwardJump(void);
static sqInt genLongUnconditionalForwardJump(void);
static sqInt genMarshalledSendSupernumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
@@ -13773,7 +13774,16 @@
return genJumpIfto(trueObject(), target);
}
+
+/* 237 11101101 i i i i i i i i Pop and Store Temporary Variable #iiiiiiii */
+
static sqInt
+genLongStoreAndPopTemporaryVariableBytecode(void)
+{
+ return genStorePopTemporaryVariable(1, byte1);
+}
+
+static sqInt
genLongUnconditionalBackwardJump(void)
{
sqInt distance;
@@ -21814,15 +21824,18 @@
}
-/* Try and collapse
+/* If the sequence of bytecodes is
push: (Array new: 1)
popIntoTemp: tempIndex
pushConstant: const or pushTemp: n
popIntoTemp: 0 inVectorAt: tempIndex
- into
- tempAt: tempIndex put: {const}.
+ collapse this into
+ tempAt: tempIndex put: {const or temp}
+ and answer true, otherwise answer false.
One might think that we should look for a sequence of more than
- one pushes and pops but this is extremely rare. */
+ one pushes and pops but this is extremely rare.
+ Exclude pushRcvr: n to avoid potential complications with context inst
+ vars. */
static sqInt
tryCollapseTempVectorInitializationOfSize(sqInt slots)
@@ -21830,8 +21843,10 @@
BytecodeDescriptor *pushArrayDesc;
BytecodeDescriptor *pushValueDesc;
sqInt reg;
+ sqInt remoteTempIndex;
BytecodeDescriptor *storeArrayDesc;
BytecodeDescriptor *storeValueDesc;
+ sqInt tempIndex;
if (slots != 1) {
return 0;
@@ -21839,17 +21854,25 @@
pushArrayDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(bytecodePC, methodObj)));
assert(((pushArrayDesc->generator)) == genPushNewArrayBytecode);
storeArrayDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(bytecodePC + ((pushArrayDesc->numBytes)), methodObj)));
- if (((storeArrayDesc->generator)) != genStoreAndPopTemporaryVariableBytecode) {
- return 0;
+ if (((storeArrayDesc->generator)) == genStoreAndPopTemporaryVariableBytecode) {
+ tempIndex = (fetchByteofObject(bytecodePC + ((pushArrayDesc->numBytes)), methodObj)) & 7;
}
+ else {
+ if (!(((storeArrayDesc->generator)) == genLongStoreAndPopTemporaryVariableBytecode)) {
+ return 0;
+ }
+ tempIndex = fetchByteofObject((bytecodePC + ((pushArrayDesc->numBytes))) + 1, methodObj);
+ }
pushValueDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes)), methodObj)));
- if ((((pushValueDesc->generator)) != genPushLiteralConstantBytecode)
- && ((((pushValueDesc->generator)) != genPushQuickIntegerConstantBytecode)
- && (((pushValueDesc->generator)) != genPushTemporaryVariableBytecode))) {
+ if (!((((pushValueDesc->generator)) == genPushLiteralConstantBytecode)
+ || ((((pushValueDesc->generator)) == genPushQuickIntegerConstantBytecode)
+ || (((pushValueDesc->generator)) == genPushTemporaryVariableBytecode)))) {
return 0;
}
storeValueDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes))) + ((pushValueDesc->numBytes)), methodObj)));
- if (((storeValueDesc->generator)) != genStoreAndPopRemoteTempLongBytecode) {
+ remoteTempIndex = fetchByteofObject((((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes))) + ((pushValueDesc->numBytes))) + 2, methodObj);
+ if (!((((storeValueDesc->generator)) == genStoreAndPopRemoteTempLongBytecode)
+ && (tempIndex == remoteTempIndex))) {
return 0;
}
genNewArrayOfSizeinitialized(1, 0);
Modified: branches/Cog/spursistasrc/vm/cogit.h
===================================================================
--- branches/Cog/spursistasrc/vm/cogit.h 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/spursistasrc/vm/cogit.h 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
Modified: branches/Cog/spursistasrc/vm/cogmethod.h
===================================================================
--- branches/Cog/spursistasrc/vm/cogmethod.h 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/spursistasrc/vm/cogmethod.h 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
typedef struct {
Modified: branches/Cog/spursrc/vm/cogit.c
===================================================================
--- branches/Cog/spursrc/vm/cogit.c 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/spursrc/vm/cogit.c 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ StackToRegisterMappingCogit VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72 " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -669,6 +669,7 @@
static sqInt genLoadStackPointers(AbstractInstruction * self_in_genLoadStackPointers) NoDbgRegParms;
static sqInt genLongJumpIfFalse(void);
static sqInt genLongJumpIfTrue(void);
+static sqInt genLongStoreAndPopTemporaryVariableBytecode(void);
static sqInt genLongUnconditionalBackwardJump(void);
static sqInt genLongUnconditionalForwardJump(void);
static sqInt genMarshalledSendSupernumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
@@ -13716,7 +13717,16 @@
return genJumpIfto(trueObject(), target);
}
+
+/* 237 11101101 i i i i i i i i Pop and Store Temporary Variable #iiiiiiii */
+
static sqInt
+genLongStoreAndPopTemporaryVariableBytecode(void)
+{
+ return genStorePopTemporaryVariable(1, byte1);
+}
+
+static sqInt
genLongUnconditionalBackwardJump(void)
{
sqInt distance;
@@ -21151,15 +21161,18 @@
}
-/* Try and collapse
+/* If the sequence of bytecodes is
push: (Array new: 1)
popIntoTemp: tempIndex
pushConstant: const or pushTemp: n
popIntoTemp: 0 inVectorAt: tempIndex
- into
- tempAt: tempIndex put: {const}.
+ collapse this into
+ tempAt: tempIndex put: {const or temp}
+ and answer true, otherwise answer false.
One might think that we should look for a sequence of more than
- one pushes and pops but this is extremely rare. */
+ one pushes and pops but this is extremely rare.
+ Exclude pushRcvr: n to avoid potential complications with context inst
+ vars. */
static sqInt
tryCollapseTempVectorInitializationOfSize(sqInt slots)
@@ -21167,8 +21180,10 @@
BytecodeDescriptor *pushArrayDesc;
BytecodeDescriptor *pushValueDesc;
sqInt reg;
+ sqInt remoteTempIndex;
BytecodeDescriptor *storeArrayDesc;
BytecodeDescriptor *storeValueDesc;
+ sqInt tempIndex;
if (slots != 1) {
return 0;
@@ -21176,17 +21191,25 @@
pushArrayDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(bytecodePC, methodObj)));
assert(((pushArrayDesc->generator)) == genPushNewArrayBytecode);
storeArrayDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(bytecodePC + ((pushArrayDesc->numBytes)), methodObj)));
- if (((storeArrayDesc->generator)) != genStoreAndPopTemporaryVariableBytecode) {
- return 0;
+ if (((storeArrayDesc->generator)) == genStoreAndPopTemporaryVariableBytecode) {
+ tempIndex = (fetchByteofObject(bytecodePC + ((pushArrayDesc->numBytes)), methodObj)) & 7;
}
+ else {
+ if (!(((storeArrayDesc->generator)) == genLongStoreAndPopTemporaryVariableBytecode)) {
+ return 0;
+ }
+ tempIndex = fetchByteofObject((bytecodePC + ((pushArrayDesc->numBytes))) + 1, methodObj);
+ }
pushValueDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes)), methodObj)));
- if ((((pushValueDesc->generator)) != genPushLiteralConstantBytecode)
- && ((((pushValueDesc->generator)) != genPushQuickIntegerConstantBytecode)
- && (((pushValueDesc->generator)) != genPushTemporaryVariableBytecode))) {
+ if (!((((pushValueDesc->generator)) == genPushLiteralConstantBytecode)
+ || ((((pushValueDesc->generator)) == genPushQuickIntegerConstantBytecode)
+ || (((pushValueDesc->generator)) == genPushTemporaryVariableBytecode)))) {
return 0;
}
storeValueDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes))) + ((pushValueDesc->numBytes)), methodObj)));
- if (((storeValueDesc->generator)) != genStoreAndPopRemoteTempLongBytecode) {
+ remoteTempIndex = fetchByteofObject((((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes))) + ((pushValueDesc->numBytes))) + 2, methodObj);
+ if (!((((storeValueDesc->generator)) == genStoreAndPopRemoteTempLongBytecode)
+ && (tempIndex == remoteTempIndex))) {
return 0;
}
genNewArrayOfSizeinitialized(1, 0);
Modified: branches/Cog/spursrc/vm/cogit.h
===================================================================
--- branches/Cog/spursrc/vm/cogit.h 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/spursrc/vm/cogit.h 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
Modified: branches/Cog/spursrc/vm/cogmethod.h
===================================================================
--- branches/Cog/spursrc/vm/cogmethod.h 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/spursrc/vm/cogmethod.h 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
typedef struct {
Modified: branches/Cog/src/vm/cogit.c
===================================================================
--- branches/Cog/src/vm/cogit.c 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/src/vm/cogit.c 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ StackToRegisterMappingCogit VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72 " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -664,6 +664,7 @@
static sqInt genLoadStackPointers(AbstractInstruction * self_in_genLoadStackPointers) NoDbgRegParms;
static sqInt genLongJumpIfFalse(void);
static sqInt genLongJumpIfTrue(void);
+static sqInt genLongStoreAndPopTemporaryVariableBytecode(void);
static sqInt genLongUnconditionalBackwardJump(void);
static sqInt genLongUnconditionalForwardJump(void);
static sqInt genMarshalledSendSupernumArgs(sqInt selector, sqInt numArgs) NoDbgRegParms;
@@ -12646,7 +12647,16 @@
return genJumpIfto(trueObject(), target);
}
+
+/* 237 11101101 i i i i i i i i Pop and Store Temporary Variable #iiiiiiii */
+
static sqInt
+genLongStoreAndPopTemporaryVariableBytecode(void)
+{
+ return genStorePopTemporaryVariable(1, byte1);
+}
+
+static sqInt
genLongUnconditionalBackwardJump(void)
{
sqInt distance;
@@ -20173,15 +20183,18 @@
}
-/* Try and collapse
+/* If the sequence of bytecodes is
push: (Array new: 1)
popIntoTemp: tempIndex
pushConstant: const or pushTemp: n
popIntoTemp: 0 inVectorAt: tempIndex
- into
- tempAt: tempIndex put: {const}.
+ collapse this into
+ tempAt: tempIndex put: {const or temp}
+ and answer true, otherwise answer false.
One might think that we should look for a sequence of more than
- one pushes and pops but this is extremely rare. */
+ one pushes and pops but this is extremely rare.
+ Exclude pushRcvr: n to avoid potential complications with context inst
+ vars. */
static sqInt
tryCollapseTempVectorInitializationOfSize(sqInt slots)
@@ -20189,8 +20202,10 @@
BytecodeDescriptor *pushArrayDesc;
BytecodeDescriptor *pushValueDesc;
sqInt reg;
+ sqInt remoteTempIndex;
BytecodeDescriptor *storeArrayDesc;
BytecodeDescriptor *storeValueDesc;
+ sqInt tempIndex;
if (slots != 1) {
return 0;
@@ -20198,17 +20213,25 @@
pushArrayDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(bytecodePC, methodObj)));
assert(((pushArrayDesc->generator)) == genPushNewArrayBytecode);
storeArrayDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(bytecodePC + ((pushArrayDesc->numBytes)), methodObj)));
- if (((storeArrayDesc->generator)) != genStoreAndPopTemporaryVariableBytecode) {
- return 0;
+ if (((storeArrayDesc->generator)) == genStoreAndPopTemporaryVariableBytecode) {
+ tempIndex = (fetchByteofObject(bytecodePC + ((pushArrayDesc->numBytes)), methodObj)) & 7;
}
+ else {
+ if (!(((storeArrayDesc->generator)) == genLongStoreAndPopTemporaryVariableBytecode)) {
+ return 0;
+ }
+ tempIndex = fetchByteofObject((bytecodePC + ((pushArrayDesc->numBytes))) + 1, methodObj);
+ }
pushValueDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes)), methodObj)));
- if ((((pushValueDesc->generator)) != genPushLiteralConstantBytecode)
- && ((((pushValueDesc->generator)) != genPushQuickIntegerConstantBytecode)
- && (((pushValueDesc->generator)) != genPushTemporaryVariableBytecode))) {
+ if (!((((pushValueDesc->generator)) == genPushLiteralConstantBytecode)
+ || ((((pushValueDesc->generator)) == genPushQuickIntegerConstantBytecode)
+ || (((pushValueDesc->generator)) == genPushTemporaryVariableBytecode)))) {
return 0;
}
storeValueDesc = generatorAt(bytecodeSetOffset + (fetchByteofObject(((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes))) + ((pushValueDesc->numBytes)), methodObj)));
- if (((storeValueDesc->generator)) != genStoreAndPopRemoteTempLongBytecode) {
+ remoteTempIndex = fetchByteofObject((((bytecodePC + ((pushArrayDesc->numBytes))) + ((storeArrayDesc->numBytes))) + ((pushValueDesc->numBytes))) + 2, methodObj);
+ if (!((((storeValueDesc->generator)) == genStoreAndPopRemoteTempLongBytecode)
+ && (tempIndex == remoteTempIndex))) {
return 0;
}
genNewArrayOfSizeinitialized(1, 0);
Modified: branches/Cog/src/vm/cogit.h
===================================================================
--- branches/Cog/src/vm/cogit.h 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/src/vm/cogit.h 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
Modified: branches/Cog/src/vm/cogmethod.h
===================================================================
--- branches/Cog/src/vm/cogmethod.h 2014-06-02 01:11:49 UTC (rev 2938)
+++ branches/Cog/src/vm/cogmethod.h 2014-06-02 15:09:52 UTC (rev 2939)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.746 uuid: cc4961d3-e629-4e28-b308-88eab314a8c9
+ CCodeGenerator VMMaker.oscog-eem.747 uuid: 488671d9-ac3b-4b24-8102-9a2623c7ce72
*/
typedef struct {
More information about the Vm-dev
mailing list