[Vm-dev] [commit][2908] CogVM source as per VMMaker.oscog-djm.688
commits at squeakvm.org
commits at squeakvm.org
Tue Apr 29 20:37:36 UTC 2014
Revision: 2908
Author: eliot
Date: 2014-04-29 13:37:34 -0700 (Tue, 29 Apr 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-djm.688
ARM32FFIPlugin:
Change dummyFloatFunction to loadFloatRegs since it is a better name. Define this
function elsewhere (platforms/Cross/plugins/SqueakFFIPrims/sqFFIPlugin.c) so that
the C optimizer cannot optimize it away. This fixes a problem when calling out to
functions taking float parameters when compiling with optimization level > 0.
VMMaker image:
Add an expression to the workspace to generate plugins.
Modified Paths:
--------------
branches/Cog/image/Workspace.text
branches/Cog/src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c
Property Changed:
----------------
branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/image/Workspace.text
===================================================================
--- branches/Cog/image/Workspace.text 2014-04-28 23:40:49 UTC (rev 2907)
+++ branches/Cog/image/Workspace.text 2014-04-29 20:37:34 UTC (rev 2908)
@@ -9,3 +9,11 @@
To rebuild this image run buildsqueak45image.sh.
Read the class comments of StackInterpreterSimulator and CogVMSimulator for running the simulator, and/or look at the examples in the VM Simulation Workspace.
+
+This is useful for generating a set of plugins to the default directory:
+(VMMaker
+ makerFor: StackInterpreter
+ and: nil with: #()
+ to: VMMaker sourceTree, '/src'
+ platformDir: VMMaker sourceTree, '/platforms'
+ including: #(ThreadedARMFFIPlugin)) generateExternalPlugins
\ No newline at end of file
Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
- Mon Apr 28 16:37:33 PDT 2014
+ Tue Apr 29 13:35:14 PDT 2014
Modified: branches/Cog/src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c
===================================================================
--- branches/Cog/src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c 2014-04-28 23:40:49 UTC (rev 2907)
+++ branches/Cog/src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c 2014-04-29 20:37:34 UTC (rev 2908)
@@ -1,9 +1,9 @@
/* Automatically generated by
- VMPluginCodeGenerator VMMaker.oscog-eem.686 uuid: ac4e60d6-a8f2-4bf4-bb5d-e21f243310fa
+ VMPluginCodeGenerator VMMaker.oscog-djm.688 uuid: 39f5e8fc-f8f0-43cc-89f4-eb61de29c7fb
from
- ThreadedARMFFIPlugin VMMaker.oscog-eem.686 uuid: ac4e60d6-a8f2-4bf4-bb5d-e21f243310fa
+ ThreadedARMFFIPlugin VMMaker.oscog-djm.688 uuid: 39f5e8fc-f8f0-43cc-89f4-eb61de29c7fb
*/
-static char __buildInfo[] = "ThreadedARMFFIPlugin VMMaker.oscog-eem.686 uuid: ac4e60d6-a8f2-4bf4-bb5d-e21f243310fa " __DATE__ ;
+static char __buildInfo[] = "ThreadedARMFFIPlugin VMMaker.oscog-djm.688 uuid: 39f5e8fc-f8f0-43cc-89f4-eb61de29c7fb " __DATE__ ;
@@ -208,7 +208,6 @@
/*** Function Prototypes ***/
static sqInt atomicTypeOf(sqInt typeSpec);
static void cleanupCalloutState(CalloutState *calloutState);
-static void dummyFloatFunctionwithwithwithwithwithwithwith(double d1, double d2, double d3, double d4, double d5, double d6, double d7, double d8);
static sqInt externalFunctionHasStackSizeSlot(void);
static sqInt ffiAddressOfstartingAtsize(sqInt rcvr, sqInt byteOffset, sqInt byteSize);
static sqInt ffiArgByValuein(sqInt oop, CalloutState *calloutState);
@@ -452,9 +451,9 @@
struct VirtualMachine* interpreterProxy;
static const char *moduleName =
#ifdef SQUEAK_BUILTIN_PLUGIN
- "ARM32FFIPlugin VMMaker.oscog-eem.686 (i)"
+ "ARM32FFIPlugin VMMaker.oscog-djm.688 (i)"
#else
- "ARM32FFIPlugin VMMaker.oscog-eem.686 (e)"
+ "ARM32FFIPlugin VMMaker.oscog-djm.688 (e)"
#endif
;
@@ -486,11 +485,6 @@
}
}
-static void
-dummyFloatFunctionwithwithwithwithwithwithwith(double d1, double d2, double d3, double d4, double d5, double d6, double d7, double d8)
-{
-}
-
static sqInt
externalFunctionHasStackSizeSlot(void)
{
@@ -1555,6 +1549,7 @@
double floatRet;
sqInt i;
usqLong intRet;
+ extern void loadFloatRegs(double, double, double, double, double, double, double, double);
sqInt myThreadIndex;
sqInt oop;
sqInt oop1;
@@ -1584,7 +1579,7 @@
setsp((calloutState->argVector));
}
if (((calloutState->floatRegisterIndex)) > 0) {
- dummyFloatFunctionwithwithwithwithwithwithwith((((double *) ((&(((calloutState->floatRegisters))[0])))))[0], (((double *) ((&(((calloutState->floatRegisters))[2])))))[0], (((double *) ((&(((calloutState->floatRegisters))[4])))))[0], (((double *) ((&(((calloutState->floatRegisters))[6])))))[0], (((double *) ((&(((calloutState->floatRegisters))[8])))))[0], (((double *) ((&(((calloutState->floatRegisters))[10])))))[0], (((double *) ((&(((calloutState->floatRegisters))[12])))))[0], (((double *) ((&(((calloutState->floatRegisters))[14])))))[0]);
+ loadFloatRegs((((double *) ((&(((calloutState->floatRegisters))[0])))))[0], (((double *) ((&(((calloutState->floatRegisters))[2])))))[0], (((double *) ((&(((calloutState->floatRegisters))[4])))))[0], (((double *) ((&(((calloutState->floatRegisters))[6])))))[0], (((double *) ((&(((calloutState->floatRegisters))[8])))))[0], (((double *) ((&(((calloutState->floatRegisters))[10])))))[0], (((double *) ((&(((calloutState->floatRegisters))[12])))))[0], (((double *) ((&(((calloutState->floatRegisters))[14])))))[0]);
}
/* begin atomicTypeOf: */
typeSpec = (calloutState->ffiRetHeader);
@@ -1744,6 +1739,7 @@
sqInt i;
sqInt i1;
usqLong intRet;
+ extern void loadFloatRegs(double, double, double, double, double, double, double, double);
sqInt myThreadIndex;
sqInt oop;
sqInt oop1;
@@ -1961,7 +1957,7 @@
setsp((calloutState->argVector));
}
if (((calloutState->floatRegisterIndex)) > 0) {
- dummyFloatFunctionwithwithwithwithwithwithwith((((double *) ((&(((calloutState->floatRegisters))[0])))))[0], (((double *) ((&(((calloutState->floatRegisters))[2])))))[0], (((double *) ((&(((calloutState->floatRegisters))[4])))))[0], (((double *) ((&(((calloutState->floatRegisters))[6])))))[0], (((double *) ((&(((calloutState->floatRegisters))[8])))))[0], (((double *) ((&(((calloutState->floatRegisters))[10])))))[0], (((double *) ((&(((calloutState->floatRegisters))[12])))))[0], (((double *) ((&(((calloutState->floatRegisters))[14])))))[0]);
+ loadFloatRegs((((double *) ((&(((calloutState->floatRegisters))[0])))))[0], (((double *) ((&(((calloutState->floatRegisters))[2])))))[0], (((double *) ((&(((calloutState->floatRegisters))[4])))))[0], (((double *) ((&(((calloutState->floatRegisters))[6])))))[0], (((double *) ((&(((calloutState->floatRegisters))[8])))))[0], (((double *) ((&(((calloutState->floatRegisters))[10])))))[0], (((double *) ((&(((calloutState->floatRegisters))[12])))))[0], (((double *) ((&(((calloutState->floatRegisters))[14])))))[0]);
}
/* begin atomicTypeOf: */
typeSpec = (calloutState->ffiRetHeader);
@@ -3528,6 +3524,8 @@
sqInt i3;
usqLong intRet;
usqLong intRet1;
+ extern void loadFloatRegs(double, double, double, double, double, double, double, double);
+ extern void loadFloatRegs1(double, double, double, double, double, double, double, double);
sqInt meth;
sqInt myThreadIndex;
sqInt myThreadIndex1;
@@ -3797,7 +3795,7 @@
setsp((calloutState->argVector));
}
if (((calloutState->floatRegisterIndex)) > 0) {
- dummyFloatFunctionwithwithwithwithwithwithwith((((double *) ((&(((calloutState->floatRegisters))[0])))))[0], (((double *) ((&(((calloutState->floatRegisters))[2])))))[0], (((double *) ((&(((calloutState->floatRegisters))[4])))))[0], (((double *) ((&(((calloutState->floatRegisters))[6])))))[0], (((double *) ((&(((calloutState->floatRegisters))[8])))))[0], (((double *) ((&(((calloutState->floatRegisters))[10])))))[0], (((double *) ((&(((calloutState->floatRegisters))[12])))))[0], (((double *) ((&(((calloutState->floatRegisters))[14])))))[0]);
+ loadFloatRegs((((double *) ((&(((calloutState->floatRegisters))[0])))))[0], (((double *) ((&(((calloutState->floatRegisters))[2])))))[0], (((double *) ((&(((calloutState->floatRegisters))[4])))))[0], (((double *) ((&(((calloutState->floatRegisters))[6])))))[0], (((double *) ((&(((calloutState->floatRegisters))[8])))))[0], (((double *) ((&(((calloutState->floatRegisters))[10])))))[0], (((double *) ((&(((calloutState->floatRegisters))[12])))))[0], (((double *) ((&(((calloutState->floatRegisters))[14])))))[0]);
}
/* begin atomicTypeOf: */
typeSpec = (calloutState->ffiRetHeader);
@@ -4149,7 +4147,7 @@
setsp((calloutState1->argVector));
}
if (((calloutState1->floatRegisterIndex)) > 0) {
- dummyFloatFunctionwithwithwithwithwithwithwith((((double *) ((&(((calloutState1->floatRegisters))[0])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[2])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[4])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[6])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[8])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[10])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[12])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[14])))))[0]);
+ loadFloatRegs((((double *) ((&(((calloutState1->floatRegisters))[0])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[2])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[4])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[6])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[8])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[10])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[12])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[14])))))[0]);
}
/* begin atomicTypeOf: */
typeSpec2 = (calloutState1->ffiRetHeader);
@@ -4349,6 +4347,8 @@
sqInt i3;
usqLong intRet;
usqLong intRet1;
+ extern void loadFloatRegs(double, double, double, double, double, double, double, double);
+ extern void loadFloatRegs1(double, double, double, double, double, double, double, double);
sqInt myThreadIndex;
sqInt myThreadIndex1;
sqInt nArgs;
@@ -4620,7 +4620,7 @@
setsp((calloutState->argVector));
}
if (((calloutState->floatRegisterIndex)) > 0) {
- dummyFloatFunctionwithwithwithwithwithwithwith((((double *) ((&(((calloutState->floatRegisters))[0])))))[0], (((double *) ((&(((calloutState->floatRegisters))[2])))))[0], (((double *) ((&(((calloutState->floatRegisters))[4])))))[0], (((double *) ((&(((calloutState->floatRegisters))[6])))))[0], (((double *) ((&(((calloutState->floatRegisters))[8])))))[0], (((double *) ((&(((calloutState->floatRegisters))[10])))))[0], (((double *) ((&(((calloutState->floatRegisters))[12])))))[0], (((double *) ((&(((calloutState->floatRegisters))[14])))))[0]);
+ loadFloatRegs((((double *) ((&(((calloutState->floatRegisters))[0])))))[0], (((double *) ((&(((calloutState->floatRegisters))[2])))))[0], (((double *) ((&(((calloutState->floatRegisters))[4])))))[0], (((double *) ((&(((calloutState->floatRegisters))[6])))))[0], (((double *) ((&(((calloutState->floatRegisters))[8])))))[0], (((double *) ((&(((calloutState->floatRegisters))[10])))))[0], (((double *) ((&(((calloutState->floatRegisters))[12])))))[0], (((double *) ((&(((calloutState->floatRegisters))[14])))))[0]);
}
/* begin atomicTypeOf: */
typeSpec = (calloutState->ffiRetHeader);
@@ -4978,7 +4978,7 @@
setsp((calloutState1->argVector));
}
if (((calloutState1->floatRegisterIndex)) > 0) {
- dummyFloatFunctionwithwithwithwithwithwithwith((((double *) ((&(((calloutState1->floatRegisters))[0])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[2])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[4])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[6])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[8])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[10])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[12])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[14])))))[0]);
+ loadFloatRegs((((double *) ((&(((calloutState1->floatRegisters))[0])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[2])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[4])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[6])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[8])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[10])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[12])))))[0], (((double *) ((&(((calloutState1->floatRegisters))[14])))))[0]);
}
/* begin atomicTypeOf: */
typeSpec2 = (calloutState1->ffiRetHeader);
More information about the Vm-dev
mailing list