[Vm-dev] [commit] r2562 - Make the sqGnu.h machinery support the multiple bytecode sets scheme.

commits at squeakvm.org commits at squeakvm.org
Wed Jul 18 00:35:03 UTC 2012


Author: eliot
Date: 2012-07-17 17:35:02 -0700 (Tue, 17 Jul 2012)
New Revision: 2562

Modified:
   branches/Cog/cygwinbuild/HowToBuild
   branches/Cog/macbuild/HowToBuild
   branches/Cog/nsbuild/cygwinbuild/HowToBuild
   branches/Cog/nscogbuild/cygwinbuild/HowToBuild
   branches/Cog/nscogbuild/unixbuild/HowToBuild
   branches/Cog/nscogbuild/unixbuild/bld/mvm
   branches/Cog/platforms/Cross/vm/dispdbg.h
   branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
   branches/Cog/platforms/Mac OS/vm/Developer/sqGnu.h
   branches/Cog/platforms/unix/vm/sqGnu.h
   branches/Cog/platforms/unix/vm/sqUnixITimerHeartbeat.c
   branches/Cog/platforms/unix/vm/sqUnixITimerTickerHeartbeat.c
   branches/Cog/platforms/win32/vm/sqGnu.h
   branches/Cog/stackbuild/cygwinbuild/HowToBuild
   branches/Cog/unixbuild/HowToBuild
   branches/Cog/unixbuild/bld/mvm
   branches/Cog/unixbuild/mtbld/mvm
Log:
Make the sqGnu.h machinery support the multiple bytecode sets scheme.
Add a trace facility to dispdbg.h for multiple bytecode sets.
Update the HowToBuilds with more accurate info on building the Bochs plugin.
Add an ioDisableHeartbeat to the itimer heartbeats for debugging.
Make the unix build scripts nuke everything by default.


Modified: branches/Cog/cygwinbuild/HowToBuild
===================================================================
--- branches/Cog/cygwinbuild/HowToBuild	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/cygwinbuild/HowToBuild	2012-07-18 00:35:02 UTC (rev 2562)
@@ -66,9 +66,10 @@
 Win32.  You are on your own but your efforts will be warmly welcomed.
 First check-out the processor simulator source tree containing Bochs:
      svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors
-Then build (on the Mac the following works)
-  $ cd ROOT/processors/IA32/bochs
+Then build the libraries winbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a}
+  $ cd ROOT/processors/IA32/winbochs
   $ ./conf.COG
   $ ./makeem
-  $ cd ROOT/macbuild/BochsIA32Plugin
-  $ xcodebuild
+and build the plugin either via make (for the entire VM) or just
+  $ cd ROOT/cygwinbuild
+  $ make build/vm/BochsIA32Plugin.dll

Modified: branches/Cog/macbuild/HowToBuild
===================================================================
--- branches/Cog/macbuild/HowToBuild	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/macbuild/HowToBuild	2012-07-18 00:35:02 UTC (rev 2562)
@@ -28,10 +28,11 @@
 need to first build bochs.  First check-out the processor simulator source tree
 containing Bochs:
      svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors
-Then build using
-  $ cd ROOT/processors/IA32/bochs
+Then build the libraries macbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a}
+  $ cd ROOT/processors/IA32/macbochs
   $ ./conf.COG
   $ ./makeem
+Then build the plugin:
   $ cd ROOT/macbuild/BochsIA32Plugin
   $ xcodebuild
 

Modified: branches/Cog/nsbuild/cygwinbuild/HowToBuild
===================================================================
--- branches/Cog/nsbuild/cygwinbuild/HowToBuild	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/nsbuild/cygwinbuild/HowToBuild	2012-07-18 00:35:02 UTC (rev 2562)
@@ -66,9 +66,10 @@
 Win32.  You are on your own but your efforts will be warmly welcomed.
 First check-out the processor simulator source tree containing Bochs:
      svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors
-Then build (on the Mac the following works)
-  $ cd ROOT/processors/IA32/bochs
+Then build the libraries winbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a}
+  $ cd ROOT/processors/IA32/winbochs
   $ ./conf.COG
   $ ./makeem
-  $ cd ROOT/macbuild/BochsIA32Plugin
-  $ xcodebuild
+and build the plugin either via make (for the entire VM) or just
+  $ cd ROOT/nsbuild/cygwinbuild
+  $ make build/vm/BochsIA32Plugin.dll

Modified: branches/Cog/nscogbuild/cygwinbuild/HowToBuild
===================================================================
--- branches/Cog/nscogbuild/cygwinbuild/HowToBuild	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/nscogbuild/cygwinbuild/HowToBuild	2012-07-18 00:35:02 UTC (rev 2562)
@@ -67,9 +67,10 @@
 Win32.  You are on your own but your efforts will be warmly welcomed.
 First check-out the processor simulator source tree containing Bochs:
      svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors
-Then build (on the Mac the following works)
-  $ cd ROOT/processors/IA32/bochs
+Then build the libraries winbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a}
+  $ cd ROOT/processors/IA32/winbochs
   $ ./conf.COG
   $ ./makeem
-  $ cd ROOT/macbuild/BochsIA32Plugin
-  $ xcodebuild
+and build the plugin either via make (for the entire VM) or just
+  $ cd ROOT/nscogbuild/cygwinbuild
+  $ make build/vm/BochsIA32Plugin.dll

Modified: branches/Cog/nscogbuild/unixbuild/HowToBuild
===================================================================
--- branches/Cog/nscogbuild/unixbuild/HowToBuild	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/nscogbuild/unixbuild/HowToBuild	2012-07-18 00:35:02 UTC (rev 2562)
@@ -15,7 +15,7 @@
    reading this in unixbuild its likely you've already got the sources)
      svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms
      svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src
-     svn co http://www.squeakvm.org/svn/squeak/branches/Cog/nsbuild
+     svn co http://www.squeakvm.org/svn/squeak/branches/Cog/nscogbuild
 3. Open a shell, cd into the unixbuild/bld directory and execute
      ../../../platforms/unix/config/configure --with-src=nscogsrc CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DDEBUGVM=0" LIBS="-lpthread -luuid"
      make install prefix=WhereYouWantTheVmToGo

Modified: branches/Cog/nscogbuild/unixbuild/bld/mvm
===================================================================
--- branches/Cog/nscogbuild/unixbuild/bld/mvm	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/nscogbuild/unixbuild/bld/mvm	2012-07-18 00:35:02 UTC (rev 2562)
@@ -5,6 +5,12 @@
 *)		OPT=-O2;;
 esac
 
+echo -n "clean? "
+read a
+case $a in
+n|no|N|NO)	echo "ok but this isn't safe!!";;
+*)			make reallyclean
+esac
 test -f config.h || ../../../platforms/unix/config/configure --with-src=nscogsrc --without-vm-display-fbdev --without-npsqueak CFLAGS="-g $OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DDEBUGVM=0" LIBS="-lpthread -luuid"
 ../../../scripts/nukeversion
 rm -rf ../../../nsvmlinux

Modified: branches/Cog/platforms/Cross/vm/dispdbg.h
===================================================================
--- branches/Cog/platforms/Cross/vm/dispdbg.h	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/platforms/Cross/vm/dispdbg.h	2012-07-18 00:35:02 UTC (rev 2562)
@@ -134,6 +134,28 @@
 		warning("invalidInstructionPointerinMethod"); \
 	if (sendTrace > 1) printCallStack(); \
   } while (0)
+#elif MULTIPLEBYTECODESETS /* maintain byteCount & check for valid instruction pointer */
+# if defined(SQ_USE_GLOBAL_STRUCT) /* define only in interpreter */
+static FILE *bct = 0;
+void openBytecodeTraceFile(char *fn)
+{ if (!(bct = fopen(fn,"r"))) perror("fopen"); }
+void closeBytecodeTraceFile() { if (bct) { fclose(bct); bct = 0; } }
+# endif
+# define bytecodeDispatchDebugHook() do { char line[64], expected[64]; \
+	/* print byteCount pc byteCode(hex) stackPtr */ \
+	sprintf(expected, "%ld: %d %d(%x) %d %s\n", \
+			++GIV(byteCount), localIP-GIV(method)-3, currentBytecode, currentBytecode, \
+			(localFP-localSP)/sizeof(sqInt)-5, bytecodeNameTable[currentBytecode]); \
+	printf(expected); \
+	if (bct) { \
+		fgets(line, sizeof(line) - 1, bct); \
+		if (strcmp(line,expected)) \
+		warning("bytecode trace mismatch"); \
+	} \
+	if (0) printFrameWithSP(localFP,localSP); \
+	if (!ValidInstructionPointerCheck()) \
+		warning("invalidInstructionPointerinMethod"); \
+  } while (0)
 #elif 0 /* print current frame & instruction pointer on every bytecode. */
 # define bytecodeDispatchDebugHook() do { \
 	printFrameWithSP(localFP,localSP); \


Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
___________________________________________________________________
Modified: checkindate
   - Thu Jun 21 14:21:32 PDT 2012
   + Tue Jul 17 17:32:43 PDT 2012

Modified: branches/Cog/platforms/Mac OS/vm/Developer/sqGnu.h
===================================================================
--- branches/Cog/platforms/Mac OS/vm/Developer/sqGnu.h	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/platforms/Mac OS/vm/Developer/sqGnu.h	2012-07-18 00:35:02 UTC (rev 2562)
@@ -54,7 +54,65 @@
     #define PPC_REG_JUMP	
 #endif
 #define PRIM_DISPATCH	goto *jumpTable[GIV(primitiveIndex)]
-#define JUMP_TABLE \
+
+#if MULTIPLEBYTECODESETS
+# define JUMP_TABLE \
+  static void *jumpTable[512]= { \
+      &&_0,   &&_1,   &&_2,   &&_3,   &&_4,   &&_5,   &&_6,   &&_7,   &&_8,   &&_9, \
+     &&_10,  &&_11,  &&_12,  &&_13,  &&_14,  &&_15,  &&_16,  &&_17,  &&_18,  &&_19, \
+     &&_20,  &&_21,  &&_22,  &&_23,  &&_24,  &&_25,  &&_26,  &&_27,  &&_28,  &&_29, \
+     &&_30,  &&_31,  &&_32,  &&_33,  &&_34,  &&_35,  &&_36,  &&_37,  &&_38,  &&_39, \
+     &&_40,  &&_41,  &&_42,  &&_43,  &&_44,  &&_45,  &&_46,  &&_47,  &&_48,  &&_49, \
+     &&_50,  &&_51,  &&_52,  &&_53,  &&_54,  &&_55,  &&_56,  &&_57,  &&_58,  &&_59, \
+     &&_60,  &&_61,  &&_62,  &&_63,  &&_64,  &&_65,  &&_66,  &&_67,  &&_68,  &&_69, \
+     &&_70,  &&_71,  &&_72,  &&_73,  &&_74,  &&_75,  &&_76,  &&_77,  &&_78,  &&_79, \
+     &&_80,  &&_81,  &&_82,  &&_83,  &&_84,  &&_85,  &&_86,  &&_87,  &&_88,  &&_89, \
+     &&_90,  &&_91,  &&_92,  &&_93,  &&_94,  &&_95,  &&_96,  &&_97,  &&_98,  &&_99, \
+    &&_100, &&_101, &&_102, &&_103, &&_104, &&_105, &&_106, &&_107, &&_108, &&_109, \
+    &&_110, &&_111, &&_112, &&_113, &&_114, &&_115, &&_116, &&_117, &&_118, &&_119, \
+    &&_120, &&_121, &&_122, &&_123, &&_124, &&_125, &&_126, &&_127, &&_128, &&_129, \
+    &&_130, &&_131, &&_132, &&_133, &&_134, &&_135, &&_136, &&_137, &&_138, &&_139, \
+    &&_140, &&_141, &&_142, &&_143, &&_144, &&_145, &&_146, &&_147, &&_148, &&_149, \
+    &&_150, &&_151, &&_152, &&_153, &&_154, &&_155, &&_156, &&_157, &&_158, &&_159, \
+    &&_160, &&_161, &&_162, &&_163, &&_164, &&_165, &&_166, &&_167, &&_168, &&_169, \
+    &&_170, &&_171, &&_172, &&_173, &&_174, &&_175, &&_176, &&_177, &&_178, &&_179, \
+    &&_180, &&_181, &&_182, &&_183, &&_184, &&_185, &&_186, &&_187, &&_188, &&_189, \
+    &&_190, &&_191, &&_192, &&_193, &&_194, &&_195, &&_196, &&_197, &&_198, &&_199, \
+    &&_200, &&_201, &&_202, &&_203, &&_204, &&_205, &&_206, &&_207, &&_208, &&_209, \
+    &&_210, &&_211, &&_212, &&_213, &&_214, &&_215, &&_216, &&_217, &&_218, &&_219, \
+    &&_220, &&_221, &&_222, &&_223, &&_224, &&_225, &&_226, &&_227, &&_228, &&_229, \
+    &&_230, &&_231, &&_232, &&_233, &&_234, &&_235, &&_236, &&_237, &&_238, &&_239, \
+    &&_240, &&_241, &&_242, &&_243, &&_244, &&_245, &&_246, &&_247, &&_248, &&_249, \
+    &&_250, &&_251, &&_252, &&_253, &&_254, &&_255, &&_256, &&_257, &&_258, &&_259, \
+    &&_260, &&_261, &&_262, &&_263, &&_264, &&_265, &&_266, &&_267, &&_268, &&_269, \
+    &&_270, &&_271, &&_272, &&_273, &&_274, &&_275, &&_276, &&_277, &&_278, &&_279, \
+    &&_280, &&_281, &&_282, &&_283, &&_284, &&_285, &&_286, &&_287, &&_288, &&_289, \
+    &&_290, &&_291, &&_292, &&_293, &&_294, &&_295, &&_296, &&_297, &&_298, &&_299, \
+    &&_300, &&_301, &&_302, &&_303, &&_304, &&_305, &&_306, &&_307, &&_308, &&_309, \
+    &&_310, &&_311, &&_312, &&_313, &&_314, &&_315, &&_316, &&_317, &&_318, &&_319, \
+    &&_320, &&_321, &&_322, &&_323, &&_324, &&_325, &&_326, &&_327, &&_328, &&_329, \
+    &&_330, &&_331, &&_332, &&_333, &&_334, &&_335, &&_336, &&_337, &&_338, &&_339, \
+    &&_340, &&_341, &&_342, &&_343, &&_344, &&_345, &&_346, &&_347, &&_348, &&_349, \
+    &&_350, &&_351, &&_352, &&_353, &&_354, &&_355, &&_356, &&_357, &&_358, &&_359, \
+    &&_360, &&_361, &&_362, &&_363, &&_364, &&_365, &&_366, &&_367, &&_368, &&_369, \
+    &&_370, &&_371, &&_372, &&_373, &&_374, &&_375, &&_376, &&_377, &&_378, &&_379, \
+    &&_380, &&_381, &&_382, &&_383, &&_384, &&_385, &&_386, &&_387, &&_388, &&_389, \
+    &&_390, &&_391, &&_392, &&_393, &&_394, &&_395, &&_396, &&_397, &&_398, &&_399, \
+    &&_400, &&_401, &&_402, &&_403, &&_404, &&_405, &&_406, &&_407, &&_408, &&_409, \
+    &&_410, &&_411, &&_412, &&_413, &&_414, &&_415, &&_416, &&_417, &&_418, &&_419, \
+    &&_420, &&_421, &&_422, &&_423, &&_424, &&_425, &&_426, &&_427, &&_428, &&_429, \
+    &&_430, &&_431, &&_432, &&_433, &&_434, &&_435, &&_436, &&_437, &&_438, &&_439, \
+    &&_440, &&_441, &&_442, &&_443, &&_444, &&_445, &&_446, &&_447, &&_448, &&_449, \
+    &&_450, &&_451, &&_452, &&_453, &&_454, &&_455, &&_456, &&_457, &&_458, &&_459, \
+    &&_460, &&_461, &&_462, &&_463, &&_464, &&_465, &&_466, &&_467, &&_468, &&_469, \
+    &&_470, &&_471, &&_472, &&_473, &&_474, &&_475, &&_476, &&_477, &&_478, &&_479, \
+    &&_480, &&_481, &&_482, &&_483, &&_484, &&_485, &&_486, &&_487, &&_488, &&_489, \
+    &&_490, &&_491, &&_492, &&_493, &&_494, &&_495, &&_496, &&_497, &&_498, &&_499, \
+    &&_500, &&_501, &&_502, &&_503, &&_504, &&_505, &&_506, &&_507, &&_508, &&_509, \
+    &&_510, &&_511 \
+  } PPC_REG_JUMP;
+#else /* MULTIPLEBYTECODESETS */
+# define JUMP_TABLE \
    void *jumpTable[256]= { \
       &&_0,   &&_1,   &&_2,   &&_3,   &&_4,   &&_5,   &&_6,   &&_7,   &&_8,   &&_9, \
      &&_10,  &&_11,  &&_12,  &&_13,  &&_14,  &&_15,  &&_16,  &&_17,  &&_18,  &&_19, \
@@ -83,6 +141,7 @@
     &&_240, &&_241, &&_242, &&_243, &&_244, &&_245, &&_246, &&_247, &&_248, &&_249, \
     &&_250, &&_251, &&_252, &&_253, &&_254, &&_255 \
   } PPC_REG_JUMP;
+#endif /* MULTIPLEBYTECODESETS */
 #define PRIM_TABLE \
   static void *jumpTable[700]= { \
       &&_0,   &&_1,   &&_2,   &&_3,   &&_4,   &&_5,   &&_6,   &&_7,   &&_8,   &&_9, \

Modified: branches/Cog/platforms/unix/vm/sqGnu.h
===================================================================
--- branches/Cog/platforms/unix/vm/sqGnu.h	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/platforms/unix/vm/sqGnu.h	2012-07-18 00:35:02 UTC (rev 2562)
@@ -52,7 +52,64 @@
 # define PRIM_DISPATCH	goto *jumpTable[primitiveIndex]
 #endif
 
-#define JUMP_TABLE \
+#if MULTIPLEBYTECODESETS
+# define JUMP_TABLE \
+  static void *jumpTable[512]= { \
+      &&_0,   &&_1,   &&_2,   &&_3,   &&_4,   &&_5,   &&_6,   &&_7,   &&_8,   &&_9, \
+     &&_10,  &&_11,  &&_12,  &&_13,  &&_14,  &&_15,  &&_16,  &&_17,  &&_18,  &&_19, \
+     &&_20,  &&_21,  &&_22,  &&_23,  &&_24,  &&_25,  &&_26,  &&_27,  &&_28,  &&_29, \
+     &&_30,  &&_31,  &&_32,  &&_33,  &&_34,  &&_35,  &&_36,  &&_37,  &&_38,  &&_39, \
+     &&_40,  &&_41,  &&_42,  &&_43,  &&_44,  &&_45,  &&_46,  &&_47,  &&_48,  &&_49, \
+     &&_50,  &&_51,  &&_52,  &&_53,  &&_54,  &&_55,  &&_56,  &&_57,  &&_58,  &&_59, \
+     &&_60,  &&_61,  &&_62,  &&_63,  &&_64,  &&_65,  &&_66,  &&_67,  &&_68,  &&_69, \
+     &&_70,  &&_71,  &&_72,  &&_73,  &&_74,  &&_75,  &&_76,  &&_77,  &&_78,  &&_79, \
+     &&_80,  &&_81,  &&_82,  &&_83,  &&_84,  &&_85,  &&_86,  &&_87,  &&_88,  &&_89, \
+     &&_90,  &&_91,  &&_92,  &&_93,  &&_94,  &&_95,  &&_96,  &&_97,  &&_98,  &&_99, \
+    &&_100, &&_101, &&_102, &&_103, &&_104, &&_105, &&_106, &&_107, &&_108, &&_109, \
+    &&_110, &&_111, &&_112, &&_113, &&_114, &&_115, &&_116, &&_117, &&_118, &&_119, \
+    &&_120, &&_121, &&_122, &&_123, &&_124, &&_125, &&_126, &&_127, &&_128, &&_129, \
+    &&_130, &&_131, &&_132, &&_133, &&_134, &&_135, &&_136, &&_137, &&_138, &&_139, \
+    &&_140, &&_141, &&_142, &&_143, &&_144, &&_145, &&_146, &&_147, &&_148, &&_149, \
+    &&_150, &&_151, &&_152, &&_153, &&_154, &&_155, &&_156, &&_157, &&_158, &&_159, \
+    &&_160, &&_161, &&_162, &&_163, &&_164, &&_165, &&_166, &&_167, &&_168, &&_169, \
+    &&_170, &&_171, &&_172, &&_173, &&_174, &&_175, &&_176, &&_177, &&_178, &&_179, \
+    &&_180, &&_181, &&_182, &&_183, &&_184, &&_185, &&_186, &&_187, &&_188, &&_189, \
+    &&_190, &&_191, &&_192, &&_193, &&_194, &&_195, &&_196, &&_197, &&_198, &&_199, \
+    &&_200, &&_201, &&_202, &&_203, &&_204, &&_205, &&_206, &&_207, &&_208, &&_209, \
+    &&_210, &&_211, &&_212, &&_213, &&_214, &&_215, &&_216, &&_217, &&_218, &&_219, \
+    &&_220, &&_221, &&_222, &&_223, &&_224, &&_225, &&_226, &&_227, &&_228, &&_229, \
+    &&_230, &&_231, &&_232, &&_233, &&_234, &&_235, &&_236, &&_237, &&_238, &&_239, \
+    &&_240, &&_241, &&_242, &&_243, &&_244, &&_245, &&_246, &&_247, &&_248, &&_249, \
+    &&_250, &&_251, &&_252, &&_253, &&_254, &&_255, &&_256, &&_257, &&_258, &&_259, \
+    &&_260, &&_261, &&_262, &&_263, &&_264, &&_265, &&_266, &&_267, &&_268, &&_269, \
+    &&_270, &&_271, &&_272, &&_273, &&_274, &&_275, &&_276, &&_277, &&_278, &&_279, \
+    &&_280, &&_281, &&_282, &&_283, &&_284, &&_285, &&_286, &&_287, &&_288, &&_289, \
+    &&_290, &&_291, &&_292, &&_293, &&_294, &&_295, &&_296, &&_297, &&_298, &&_299, \
+    &&_300, &&_301, &&_302, &&_303, &&_304, &&_305, &&_306, &&_307, &&_308, &&_309, \
+    &&_310, &&_311, &&_312, &&_313, &&_314, &&_315, &&_316, &&_317, &&_318, &&_319, \
+    &&_320, &&_321, &&_322, &&_323, &&_324, &&_325, &&_326, &&_327, &&_328, &&_329, \
+    &&_330, &&_331, &&_332, &&_333, &&_334, &&_335, &&_336, &&_337, &&_338, &&_339, \
+    &&_340, &&_341, &&_342, &&_343, &&_344, &&_345, &&_346, &&_347, &&_348, &&_349, \
+    &&_350, &&_351, &&_352, &&_353, &&_354, &&_355, &&_356, &&_357, &&_358, &&_359, \
+    &&_360, &&_361, &&_362, &&_363, &&_364, &&_365, &&_366, &&_367, &&_368, &&_369, \
+    &&_370, &&_371, &&_372, &&_373, &&_374, &&_375, &&_376, &&_377, &&_378, &&_379, \
+    &&_380, &&_381, &&_382, &&_383, &&_384, &&_385, &&_386, &&_387, &&_388, &&_389, \
+    &&_390, &&_391, &&_392, &&_393, &&_394, &&_395, &&_396, &&_397, &&_398, &&_399, \
+    &&_400, &&_401, &&_402, &&_403, &&_404, &&_405, &&_406, &&_407, &&_408, &&_409, \
+    &&_410, &&_411, &&_412, &&_413, &&_414, &&_415, &&_416, &&_417, &&_418, &&_419, \
+    &&_420, &&_421, &&_422, &&_423, &&_424, &&_425, &&_426, &&_427, &&_428, &&_429, \
+    &&_430, &&_431, &&_432, &&_433, &&_434, &&_435, &&_436, &&_437, &&_438, &&_439, \
+    &&_440, &&_441, &&_442, &&_443, &&_444, &&_445, &&_446, &&_447, &&_448, &&_449, \
+    &&_450, &&_451, &&_452, &&_453, &&_454, &&_455, &&_456, &&_457, &&_458, &&_459, \
+    &&_460, &&_461, &&_462, &&_463, &&_464, &&_465, &&_466, &&_467, &&_468, &&_469, \
+    &&_470, &&_471, &&_472, &&_473, &&_474, &&_475, &&_476, &&_477, &&_478, &&_479, \
+    &&_480, &&_481, &&_482, &&_483, &&_484, &&_485, &&_486, &&_487, &&_488, &&_489, \
+    &&_490, &&_491, &&_492, &&_493, &&_494, &&_495, &&_496, &&_497, &&_498, &&_499, \
+    &&_500, &&_501, &&_502, &&_503, &&_504, &&_505, &&_506, &&_507, &&_508, &&_509, \
+    &&_510, &&_511 \
+  } JUMP_TABLE_PTR
+#else /* MULTIPLEBYTECODESETS */
+# define JUMP_TABLE \
   static void *jumpTable[256]= { \
       &&_0,   &&_1,   &&_2,   &&_3,   &&_4,   &&_5,   &&_6,   &&_7,   &&_8,   &&_9, \
      &&_10,  &&_11,  &&_12,  &&_13,  &&_14,  &&_15,  &&_16,  &&_17,  &&_18,  &&_19, \
@@ -81,6 +138,7 @@
     &&_240, &&_241, &&_242, &&_243, &&_244, &&_245, &&_246, &&_247, &&_248, &&_249, \
     &&_250, &&_251, &&_252, &&_253, &&_254, &&_255 \
   } JUMP_TABLE_PTR
+#endif /* MULTIPLEBYTECODESETS */
 
 #define PRIM_TABLE \
   static void *jumpTable[700]= { \

Modified: branches/Cog/platforms/unix/vm/sqUnixITimerHeartbeat.c
===================================================================
--- branches/Cog/platforms/unix/vm/sqUnixITimerHeartbeat.c	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/platforms/unix/vm/sqUnixITimerHeartbeat.c	2012-07-18 00:35:02 UTC (rev 2562)
@@ -393,16 +393,18 @@
 	if (suppressHeartbeatFlag) return;
 
 #if NEED_SIGALTSTACK
-	signal_stack.ss_flags = 0;
-	signal_stack.ss_size = SIGNAL_STACK_SIZE;
-	if (!(signal_stack.ss_sp = malloc(signal_stack.ss_size))) {
-		perror("ioInitHeartbeat malloc");
-		exit(1);
+	if (!signal_stack.ss_size) {
+		signal_stack.ss_flags = 0;
+		signal_stack.ss_size = SIGNAL_STACK_SIZE;
+		if (!(signal_stack.ss_sp = malloc(signal_stack.ss_size))) {
+			perror("ioInitHeartbeat malloc");
+			exit(1);
+		}
+		if (sigaltstack(&signal_stack, 0) < 0) {
+			perror("ioInitHeartbeat sigaltstack");
+			exit(1);
+		}
 	}
-	if (sigaltstack(&signal_stack, 0) < 0) {
-		perror("ioInitHeartbeat sigaltstack");
-		exit(1);
-	}
 #endif /* NEED_SIGALTSTACK */
 
 	heartbeat_handler_action.sa_sigaction = heartbeat_handler;
@@ -427,6 +429,20 @@
 }
 
 void
+ioDisableHeartbeat() /* for debugging */
+{
+	struct itimerval expire;
+
+	expire.it_interval.tv_sec =
+	expire.it_interval.tv_usec = 0;
+	expire.it_value = expire.it_interval;
+	if (setitimer(THE_ITIMER, &expire, 0)) {
+		perror("ioDisableHeartbeat setitimer");
+		exit(1);
+	}
+}
+
+void
 ioSetHeartbeatMilliseconds(int ms)
 {
 	beatMilliseconds = ms;

Modified: branches/Cog/platforms/unix/vm/sqUnixITimerTickerHeartbeat.c
===================================================================
--- branches/Cog/platforms/unix/vm/sqUnixITimerTickerHeartbeat.c	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/platforms/unix/vm/sqUnixITimerTickerHeartbeat.c	2012-07-18 00:35:02 UTC (rev 2562)
@@ -524,16 +524,18 @@
 	if (suppressHeartbeatFlag) return;
 
 #if NEED_SIGALTSTACK
-	signal_stack.ss_flags = 0;
-	signal_stack.ss_size = SIGNAL_STACK_SIZE;
-	if (!(signal_stack.ss_sp = malloc(signal_stack.ss_size))) {
-		perror("ioInitHeartbeat malloc");
-		exit(1);
+	if (!signal_stack.ss_size) {
+		signal_stack.ss_flags = 0;
+		signal_stack.ss_size = SIGNAL_STACK_SIZE;
+		if (!(signal_stack.ss_sp = malloc(signal_stack.ss_size))) {
+			perror("ioInitHeartbeat malloc");
+			exit(1);
+		}
+		if (sigaltstack(&signal_stack, 0) < 0) {
+			perror("ioInitHeartbeat sigaltstack");
+			exit(1);
+		}
 	}
-	if (sigaltstack(&signal_stack, 0) < 0) {
-		perror("ioInitHeartbeat sigaltstack");
-		exit(1);
-	}
 #endif /* NEED_SIGALTSTACK */
 
 	halfAMo.tv_sec  = 0;
@@ -583,6 +585,20 @@
 }
 
 void
+ioDisableHeartbeat() /* for debugging */
+{
+	struct itimerval expire;
+
+	expire.it_interval.tv_sec =
+	expire.it_interval.tv_usec = 0;
+	expire.it_value = expire.it_interval;
+	if (setitimer(THE_ITIMER, &expire, 0)) {
+		perror("ioDisableHeartbeat setitimer");
+		exit(1);
+	}
+}
+
+void
 ioSetHeartbeatMilliseconds(int ms)
 {
 	beatMilliseconds = ms;

Modified: branches/Cog/platforms/win32/vm/sqGnu.h
===================================================================
--- branches/Cog/platforms/win32/vm/sqGnu.h	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/platforms/win32/vm/sqGnu.h	2012-07-18 00:35:02 UTC (rev 2562)
@@ -21,9 +21,66 @@
 #endif
 
 #define PRIM_DISPATCH	goto *jumpTable[primitiveIndex]
-#define BC_JUMP_TABLE\
+#if MULTIPLEBYTECODESETS
+# define BC_JUMP_TABLE\
+  static void *jumpTable[512]= { \
+      &&_0,   &&_1,   &&_2,   &&_3,   &&_4,   &&_5,   &&_6,   &&_7,   &&_8,   &&_9, \
+     &&_10,  &&_11,  &&_12,  &&_13,  &&_14,  &&_15,  &&_16,  &&_17,  &&_18,  &&_19, \
+     &&_20,  &&_21,  &&_22,  &&_23,  &&_24,  &&_25,  &&_26,  &&_27,  &&_28,  &&_29, \
+     &&_30,  &&_31,  &&_32,  &&_33,  &&_34,  &&_35,  &&_36,  &&_37,  &&_38,  &&_39, \
+     &&_40,  &&_41,  &&_42,  &&_43,  &&_44,  &&_45,  &&_46,  &&_47,  &&_48,  &&_49, \
+     &&_50,  &&_51,  &&_52,  &&_53,  &&_54,  &&_55,  &&_56,  &&_57,  &&_58,  &&_59, \
+     &&_60,  &&_61,  &&_62,  &&_63,  &&_64,  &&_65,  &&_66,  &&_67,  &&_68,  &&_69, \
+     &&_70,  &&_71,  &&_72,  &&_73,  &&_74,  &&_75,  &&_76,  &&_77,  &&_78,  &&_79, \
+     &&_80,  &&_81,  &&_82,  &&_83,  &&_84,  &&_85,  &&_86,  &&_87,  &&_88,  &&_89, \
+     &&_90,  &&_91,  &&_92,  &&_93,  &&_94,  &&_95,  &&_96,  &&_97,  &&_98,  &&_99, \
+    &&_100, &&_101, &&_102, &&_103, &&_104, &&_105, &&_106, &&_107, &&_108, &&_109, \
+    &&_110, &&_111, &&_112, &&_113, &&_114, &&_115, &&_116, &&_117, &&_118, &&_119, \
+    &&_120, &&_121, &&_122, &&_123, &&_124, &&_125, &&_126, &&_127, &&_128, &&_129, \
+    &&_130, &&_131, &&_132, &&_133, &&_134, &&_135, &&_136, &&_137, &&_138, &&_139, \
+    &&_140, &&_141, &&_142, &&_143, &&_144, &&_145, &&_146, &&_147, &&_148, &&_149, \
+    &&_150, &&_151, &&_152, &&_153, &&_154, &&_155, &&_156, &&_157, &&_158, &&_159, \
+    &&_160, &&_161, &&_162, &&_163, &&_164, &&_165, &&_166, &&_167, &&_168, &&_169, \
+    &&_170, &&_171, &&_172, &&_173, &&_174, &&_175, &&_176, &&_177, &&_178, &&_179, \
+    &&_180, &&_181, &&_182, &&_183, &&_184, &&_185, &&_186, &&_187, &&_188, &&_189, \
+    &&_190, &&_191, &&_192, &&_193, &&_194, &&_195, &&_196, &&_197, &&_198, &&_199, \
+    &&_200, &&_201, &&_202, &&_203, &&_204, &&_205, &&_206, &&_207, &&_208, &&_209, \
+    &&_210, &&_211, &&_212, &&_213, &&_214, &&_215, &&_216, &&_217, &&_218, &&_219, \
+    &&_220, &&_221, &&_222, &&_223, &&_224, &&_225, &&_226, &&_227, &&_228, &&_229, \
+    &&_230, &&_231, &&_232, &&_233, &&_234, &&_235, &&_236, &&_237, &&_238, &&_239, \
+    &&_240, &&_241, &&_242, &&_243, &&_244, &&_245, &&_246, &&_247, &&_248, &&_249, \
+    &&_250, &&_251, &&_252, &&_253, &&_254, &&_255, &&_256, &&_257, &&_258, &&_259, \
+    &&_260, &&_261, &&_262, &&_263, &&_264, &&_265, &&_266, &&_267, &&_268, &&_269, \
+    &&_270, &&_271, &&_272, &&_273, &&_274, &&_275, &&_276, &&_277, &&_278, &&_279, \
+    &&_280, &&_281, &&_282, &&_283, &&_284, &&_285, &&_286, &&_287, &&_288, &&_289, \
+    &&_290, &&_291, &&_292, &&_293, &&_294, &&_295, &&_296, &&_297, &&_298, &&_299, \
+    &&_300, &&_301, &&_302, &&_303, &&_304, &&_305, &&_306, &&_307, &&_308, &&_309, \
+    &&_310, &&_311, &&_312, &&_313, &&_314, &&_315, &&_316, &&_317, &&_318, &&_319, \
+    &&_320, &&_321, &&_322, &&_323, &&_324, &&_325, &&_326, &&_327, &&_328, &&_329, \
+    &&_330, &&_331, &&_332, &&_333, &&_334, &&_335, &&_336, &&_337, &&_338, &&_339, \
+    &&_340, &&_341, &&_342, &&_343, &&_344, &&_345, &&_346, &&_347, &&_348, &&_349, \
+    &&_350, &&_351, &&_352, &&_353, &&_354, &&_355, &&_356, &&_357, &&_358, &&_359, \
+    &&_360, &&_361, &&_362, &&_363, &&_364, &&_365, &&_366, &&_367, &&_368, &&_369, \
+    &&_370, &&_371, &&_372, &&_373, &&_374, &&_375, &&_376, &&_377, &&_378, &&_379, \
+    &&_380, &&_381, &&_382, &&_383, &&_384, &&_385, &&_386, &&_387, &&_388, &&_389, \
+    &&_390, &&_391, &&_392, &&_393, &&_394, &&_395, &&_396, &&_397, &&_398, &&_399, \
+    &&_400, &&_401, &&_402, &&_403, &&_404, &&_405, &&_406, &&_407, &&_408, &&_409, \
+    &&_410, &&_411, &&_412, &&_413, &&_414, &&_415, &&_416, &&_417, &&_418, &&_419, \
+    &&_420, &&_421, &&_422, &&_423, &&_424, &&_425, &&_426, &&_427, &&_428, &&_429, \
+    &&_430, &&_431, &&_432, &&_433, &&_434, &&_435, &&_436, &&_437, &&_438, &&_439, \
+    &&_440, &&_441, &&_442, &&_443, &&_444, &&_445, &&_446, &&_447, &&_448, &&_449, \
+    &&_450, &&_451, &&_452, &&_453, &&_454, &&_455, &&_456, &&_457, &&_458, &&_459, \
+    &&_460, &&_461, &&_462, &&_463, &&_464, &&_465, &&_466, &&_467, &&_468, &&_469, \
+    &&_470, &&_471, &&_472, &&_473, &&_474, &&_475, &&_476, &&_477, &&_478, &&_479, \
+    &&_480, &&_481, &&_482, &&_483, &&_484, &&_485, &&_486, &&_487, &&_488, &&_489, \
+    &&_490, &&_491, &&_492, &&_493, &&_494, &&_495, &&_496, &&_497, &&_498, &&_499, \
+    &&_500, &&_501, &&_502, &&_503, &&_504, &&_505, &&_506, &&_507, &&_508, &&_509, \
+    &&_510, &&_511 \
+  } JUMP_TABLE_PTR
+#else /* MULTIPLEBYTECODESETS */
+# define BC_JUMP_TABLE\
   static void *jumpTable[256] = {\
- 	&&_0,   &&_1,   &&_2,	&&_3,	&&_4,   &&_5,   &&_6,   &&_7,	&&_8,   &&_9,\
+ 	  &&_0,   &&_1,   &&_2,	&&_3,	&&_4,   &&_5,   &&_6,   &&_7,	&&_8,   &&_9,\
      &&_10,  &&_11,  &&_12,  &&_13,  &&_14,  &&_15,  &&_16,  &&_17,  &&_18,  &&_19,\
      &&_20,  &&_21,  &&_22,  &&_23,  &&_24,  &&_25,  &&_26,  &&_27,  &&_28,  &&_29,\
      &&_30,  &&_31,  &&_32,  &&_33,  &&_34,  &&_35,  &&_36,  &&_37,  &&_38,  &&_39,\
@@ -50,6 +107,7 @@
     &&_240, &&_241, &&_242, &&_243, &&_244, &&_245, &&_246, &&_247, &&_248, &&_249,\
     &&_250, &&_251, &&_252, &&_253, &&_254, &&_255\
   };
+#endif /* MULTIPLEBYTECODESETS */
 
 /* Compatibility between the old and the new names of the Gnuification macros */
 #define JUMP_TABLE BC_JUMP_TABLE

Modified: branches/Cog/stackbuild/cygwinbuild/HowToBuild
===================================================================
--- branches/Cog/stackbuild/cygwinbuild/HowToBuild	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/stackbuild/cygwinbuild/HowToBuild	2012-07-18 00:35:02 UTC (rev 2562)
@@ -67,9 +67,10 @@
 Win32.  You are on your own but your efforts will be warmly welcomed.
 First check-out the processor simulator source tree containing Bochs:
      svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors
-Then build (on the Mac the following works)
-  $ cd ROOT/processors/IA32/bochs
+Then build the libraries winbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a}
+  $ cd ROOT/processors/IA32/winbochs
   $ ./conf.COG
   $ ./makeem
-  $ cd ROOT/macbuild/BochsIA32Plugin
-  $ xcodebuild
+and build the plugin either via make (for the entire VM) or just
+  $ cd ROOT/stackbuild/cygwinbuild
+  $ make build/vm/BochsIA32Plugin.dll

Modified: branches/Cog/unixbuild/HowToBuild
===================================================================
--- branches/Cog/unixbuild/HowToBuild	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/unixbuild/HowToBuild	2012-07-18 00:35:02 UTC (rev 2562)
@@ -63,13 +63,13 @@
 need to first build bochs.  First check-out the processor simulator source tree
 containing Bochs:
      svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors
-Then build using the following, which works on Mac OS and is hence unlikely to
-work entirely on linux (no xcodebuild):
-  $ cd ROOT/processors/IA32/bochs
+Then build libraries linuxbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a}
+  $ cd ROOT/processors/IA32/linuxbochs
   $ ./conf.COG
   $ ./makeem
-  $ cd ROOT/macbuild/BochsIA32Plugin
-  $ xcodebuild
+and build the plugin via
+  $ cd ROOT/unixbuild/bld/BochsIA32Plugin
+  $ make
 
 3e. If you're building the VM on a 64-bit OS, you'll need a compiler which can
 compile and link to 32-bit binaries. On most Linuxes the gcc-multilib package

Modified: branches/Cog/unixbuild/bld/mvm
===================================================================
--- branches/Cog/unixbuild/bld/mvm	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/unixbuild/bld/mvm	2012-07-18 00:35:02 UTC (rev 2562)
@@ -5,6 +5,12 @@
 *)		OPT=-O2;;
 esac
 
+echo -n "clean? "
+read a
+case $a in
+n|no|N|NO)	echo "ok but this isn't safe!!";;
+*)			make reallyclean
+esac
 test -f config.h || ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g $OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread
 ../../scripts/nukeversion
 rm -rf ../../coglinux

Modified: branches/Cog/unixbuild/mtbld/mvm
===================================================================
--- branches/Cog/unixbuild/mtbld/mvm	2012-06-25 23:53:39 UTC (rev 2561)
+++ branches/Cog/unixbuild/mtbld/mvm	2012-07-18 00:35:02 UTC (rev 2562)
@@ -5,6 +5,12 @@
 *)		OPT=-O2;;
 esac
 
+echo -n "clean? "
+read a
+case $a in
+n|no|N|NO)	echo "ok but this isn't safe!!";;
+*)			make reallyclean
+esac
 test -f config.h || ../../platforms/unix/config/configure INTERP=cointerpmt --without-npsqueak CFLAGS="-g $OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DCOGMTVM=1 -DDEBUGVM=0 -D_GNU_SOURCE -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1" LIBS=-lpthread
 ../../scripts/nukeversion
 rm -rf ../../cogmtlinux



More information about the Vm-dev mailing list