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
vm-dev@lists.squeakfoundation.org