Revision: 2932 Author: eliot Date: 2014-05-28 08:19:56 -0700 (Wed, 28 May 2014) Log Message: ----------- CogVM source as per VMMaker.oscog-eem.734
Spur: Fix bug in sortedFreeListPairwiseReverseDo:. Post block evaluation, free cannot be relied upon, so reconstruct the position in the enumeration from prevPrevFree and prevFree before moving on.
Cogit: Make sure genMethodAbortTrampolineFor: has the same linkRegister code as genMethodAbortTrampoline.
VMMaker: Add Timothy's CMake VMMaker build scripts to the image directory.
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/nsspursrc/vm/cointerp.c branches/Cog/nsspursrc/vm/cointerp.h branches/Cog/nsspursrc/vm/gcc3x-cointerp.c branches/Cog/nsspursrc/vm/interp.h branches/Cog/nsspursrc/vm/vmCallback.h branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c branches/Cog/nsspurstacksrc/vm/interp.c branches/Cog/nsspurstacksrc/vm/interp.h branches/Cog/nsspurstacksrc/vm/vmCallback.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/spursistasrc/vm/cointerp.c branches/Cog/spursistasrc/vm/cointerp.h branches/Cog/spursistasrc/vm/gcc3x-cointerp.c branches/Cog/spursistasrc/vm/interp.h branches/Cog/spursistasrc/vm/vmCallback.h branches/Cog/spursrc/vm/cogit.c branches/Cog/spursrc/vm/cogit.h branches/Cog/spursrc/vm/cogmethod.h branches/Cog/spursrc/vm/cointerp.c branches/Cog/spursrc/vm/cointerp.h branches/Cog/spursrc/vm/gcc3x-cointerp.c branches/Cog/spursrc/vm/interp.h branches/Cog/spursrc/vm/vmCallback.h branches/Cog/spurstacksrc/vm/gcc3x-interp.c branches/Cog/spurstacksrc/vm/interp.c branches/Cog/spurstacksrc/vm/interp.h branches/Cog/spurstacksrc/vm/vmCallback.h branches/Cog/src/vm/cogit.c branches/Cog/src/vm/cogit.h branches/Cog/src/vm/cogmethod.h
Added Paths: ----------- branches/Cog/image/BuildSqueak46CMakeImage.st branches/Cog/image/BuildSqueak46TrunkCMakeImage.st branches/Cog/image/BuildSqueakStandardImage.st branches/Cog/image/CMakeVMMakerSqueak.text branches/Cog/image/README branches/Cog/image/README.buildsqueakcmakeimage branches/Cog/image/VMMakerTool.text branches/Cog/image/buildsqueakcmakeimage.sh branches/Cog/image/vmm_stack_unix_max.config branches/Cog/image/vmm_stack_unix_min.config branches/Cog/image/vmm_standard_unix_max.config branches/Cog/image/vmm_standard_unix_min.config
Property Changed: ---------------- branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Added: branches/Cog/image/BuildSqueak46CMakeImage.st =================================================================== --- branches/Cog/image/BuildSqueak46CMakeImage.st (rev 0) +++ branches/Cog/image/BuildSqueak46CMakeImage.st 2014-05-28 15:19:56 UTC (rev 2932) @@ -0,0 +1,69 @@ +| manifest load | +Scanner prefAllowUnderscoreSelectors: true. + +manifest := #( ('http://source.squeak.org/FFI' 1 ('FFI-Pools' 'FFI-Kernel')) + ('http://source.squeak.org/VMMaker' 6 ('Balloon-Engine-Pools' 'VMMaker.oscog' 'Cog' 'CogTools' 'ImageFormat' 'CMakeVMMaker' 'CMakeVMMakerSqueak')) + ('http://ss3.gemstone.com/ss/MethodMassage' 3 ('MethodMassage' 'MethodMassageCompatibility')) + ('http://www.squeaksource.com/AioPlugin' 7 ('VMConstruction-Plugins-AioPlugin')) + ('http://www.squeaksource.com/Alien' 0 ('Alien')) + "('http://www.squeaksource.com/FreeTypePlus' 5 ('FreeType')) can't load this. it is toxic to Squeak 4.5" + ('http://ss3.gemstone.com/ss/FreeTypePlus' 5 ('FreeTypeConstants' 'FreeType' 'FreeTypeTests')) + ('http://www.squeaksource.com/FreetypePlugin' 8 ('Freetype-Plugin')) + ('http://www.squeaksource.com/OSProcess' 4 ('OSProcess')) + ('http://www.squeaksource.com/OSProcessPlugin' 9 ('VMConstruction-Plugins-OSProcessPlugin.oscog')) + ('http://www.squeaksource.com/rb' 5 ('AST-Core' 'AST-Semantic' 'AST-Tests-Core' 'AST-Tests-Semantic' 'Refactoring-Changes' 'Refactoring-Core' 'Refactoring-Environment' 'Refactoring-Tests-Changes' 'Refactoring-Tests-Core' 'Refactoring-Tests-Environment')) + ('http://www.squeaksource.com/Speech' 2 ('SharedPool-Speech' ))). + +load := (manifest collect: + [:tuple| + [:path :order :packages| | repository | + repository := MCHttpRepository + location: path + user: 'squeak' + password: 'squeak'. + MCRepositoryGroup default addRepository: repository. + {repository. order. packages}] valueWithArguments: tuple]) + sort: [:a :b| a second <= b second]. + +#( 'FT2Constants.st' + 'Object-performwithwithwithwithwith.st' + 'CompiledMethod-usesAlternateBytecodeSet.st' + 'FileDirectory-on-methods.st' + ) do: + [:fileName| (FileDirectory default fileNamed: fileName) fileIn]. + +World findATranscript: nil. + +load do: + [:tuple| + [:repository :order :packages| + packages do: + [:package| | latestVersion | + latestVersion := (repository versionNamesForPackageNamed: package) first. + [| version | + version := ((MCCacheRepository default includesVersionNamed: latestVersion) + ifTrue: [MCCacheRepository default] + ifFalse: [repository]) versionNamed: latestVersion. + version load. + version workingCopy repositoryGroup addRepository: repository] + on: Warning + do: [:ex| + (ex messageText beginsWith: 'This package depends on the following classes') ifFalse: + [ex pass]. + ex resume]]] + valueWithArguments: tuple]. + + +VMMakerTool openInWorld. +#( 'Workspace' 'VM Simulation Workspace' 'Slang Test Workspace' 'CMakeVMMakerSqueak') reverse do: + [:textFileName| + (StringHolder new contents: (FileDirectory default fileNamed: textFileName, '.text') contentsOfEntireFile) + openLabel: textFileName]. + +(Utilities classPool at: #CommonRequestStrings) ifNotNil: + [:crs| + crs contents: crs contents, '-\VMMaker generateConfiguration\VMMaker generateAllConfigurationsUnderVersionControl\VMClass openCogMultiWindowBrowser\VMClass openObjectMemoriesInterpretersBrowser' withCRs]. + +CodeHolder useMultiWindowBrowsers: true. + +Smalltalk snapshot: true andQuit: true Added: branches/Cog/image/BuildSqueak46TrunkCMakeImage.st =================================================================== --- branches/Cog/image/BuildSqueak46TrunkCMakeImage.st (rev 0) +++ branches/Cog/image/BuildSqueak46TrunkCMakeImage.st 2014-05-28 15:19:56 UTC (rev 2932) @@ -0,0 +1,7 @@ +"Change the update stream to trunk, update, then build as per 4.5" +[MCMcmUpdater + defaultUpdateURL: 'http://source.squeak.org/trunk'; + updateFromServer] valueSupplyingAnswer: true. + +"don't use fileIn; it causes an error when the saved image is started" +Compiler evaluate: (FileStream oldFileNamed: 'BuildSqueak46CMakeImage.st') contentsOfEntireFile Added: branches/Cog/image/BuildSqueakStandardImage.st =================================================================== --- branches/Cog/image/BuildSqueakStandardImage.st (rev 0) +++ branches/Cog/image/BuildSqueakStandardImage.st 2014-05-28 15:19:56 UTC (rev 2932) @@ -0,0 +1,57 @@ +| manifest load | +manifest := #(('http://source.squeak.org/VMMaker' 1 ( 'update'))). + +load := (manifest collect: + [:tuple| + [:path :order :packages| | repository | + repository := MCHttpRepository + location: path + user: 'squeak' + password: 'squeak'. + MCRepositoryGroup default addRepository: repository. + {repository. order. packages}] valueWithArguments: tuple]) + sort: [:a :b| a second <= b second]. + +#( 'FT2Constants.st' + 'Object-performwithwithwithwithwith.st' + 'CompiledMethod-usesAlternateBytecodeSet.st' + 'FileDirectory-on-methods.st' + ) do: + [:fileName| (FileDirectory default fileNamed: fileName) fileIn]. + + + +load do: + [:tuple| + [:repository :order :packages| + packages do: + [:package| | latestVersion | + latestVersion := (repository versionNamesForPackageNamed: package) first. + [| version | + version := ((MCCacheRepository default includesVersionNamed: latestVersion) + ifTrue: [MCCacheRepository default] + ifFalse: [repository]) versionNamed: latestVersion. + version load. + ] + on: Warning + do: [:ex| + (ex messageText beginsWith: 'This package depends on the following classes') ifFalse: + [ex pass]. + ex resume]]] + valueWithArguments: tuple]. + +World findATranscript: nil. +VMMakerTool openInWorld. + +#( 'VMMakerTool') reverse do: + [:textFileName| + (StringHolder new contents: (FileDirectory default fileNamed: textFileName, '.text') contentsOfEntireFile) + openLabel: textFileName]. + +(Utilities classPool at: #CommonRequestStrings) ifNotNil: + [:crs| + crs contents: crs contents, '-\VMMaker generateConfiguration\VMMaker generateAllConfigurationsUnderVersionControl\VMClass openCogMultiWindowBrowser\VMClass openObjectMemoriesInterpretersBrowser' withCRs]. + +CodeHolder useMultiWindowBrowsers: true. + +Smalltalk snapshot: true andQuit: true Added: branches/Cog/image/CMakeVMMakerSqueak.text =================================================================== --- branches/Cog/image/CMakeVMMakerSqueak.text (rev 0) +++ branches/Cog/image/CMakeVMMakerSqueak.text 2014-05-28 15:19:56 UTC (rev 2932) @@ -0,0 +1,118 @@ +-------------------------Cog VM Configurations using a builder------------------------- + +SqueakCogMTBuilder buildUnix32. +SqueakCogMTBuilder buildMacOSX32. +SqueakCogMTBuilder buildWin32 + + +-------------------------Cog VM Configurations------------------------- + +SqueakCogMTUnixConfig generateWithSources. +SqueakCogMTUnixConfig generate. + +SqueakCogOnDebian64Config generateWithSources +SqueakCogOnDebian64Config generate + +SqueakCogUnixDebugConfig generateWithSources +SqueakCogUnixDebugConfig generate + +SqueakCogUnixNoGLConfig generateWithSources. +SqueakCogUnixNoGLConfig generate + + +-------------------------Stack VM Configurations using a builder------------------------- +SqueakStackVMBuilder buildSlackwareUnix64w32Libs +SqueakStackVMBuilder buildSlackwareUnix64w32LibsNoGL + + +-------------------------Stack VM configurations------------------------- +SqueakStackCrossRaspbianConfig generateWithSources +SqueakStackCrossRaspbianConfig generate + +SqueakStackRaspbianFastBltConfig generateWithSources +SqueakStackCrossRaspbianFastBltConfig generate + + +SqueakStackRaspbianConfig generateWithSources +SqueakStackRaspbianConfig generate + + +SqueakStackRaspbianFastBltConfig generateWithSources +SqueakStackRaspbianFastBltConfig generate + + +SqueakStackUnixDebugConfig generateWithSources +SqueakStackUnixDebugConfig generate + +SqueakStackEvtAndroidConfig generate "" + + +-------------------------BSD configs------------------------- +SqueakCogFreeBSDConfig generateWithSources + + +-------------------------SunOS configs------------------------- +SqueakCogFreeBSDConfig generateWithSources + + + +-------------------------MacOS Configurations------------------------- + +SqueakCogMacOSConfig generateWithSources. +SqueakCogMacOSConfig generate. + +SqueakCogMacOSDebugConfig generateWithSources. +SqueakCogMacOSDebugConfig generate. + + +SqueakCogMTMacOSConfig generateWithSources. +SqueakCogMTMacOSConfig generate. + + +SqueakStackMacOSConfig generateWithSources. +SqueakStackMacOSConfig generate. + + +SqueakStackMacOSDebugConfig generateWithSources. +SqueakStackMacOSDebugConfig generate. + + +-------------------------IOS Configurations------------------------- + + +SqueakCogCocoaIOSConfig generateWithSources +SqueakCogCocoaIOSConfig generate + +SqueakCogMTCocoaIOSConfig generateWithSources +SqueakCogMTCocoaIOSConfig generate + + +SqueakStackCocoaIOSConfig generateWithSources +SqueakStackCocoaIOSConfig generate + + +SqueakStackCocoaIOSCLANGConfig generateWithSources +SqueakStackCocoaIOSCLANGConfig generate + +SqueakStackIPhoneConfig generateWithSources +SqueakStackIPhoneConfig generate + + +SqueakStackIPhoneSimulatorConfig generateWithSources +SqueakStackIPhoneSimulatorConfig generate + +-------------------------Windows configs------------------------- +SqueakCogWindowsConfig generateWithSources +SqueakCogWindowsConfig generate. + + +SqueakCogMTWindowsConfig generateWithSources +SqueakCogMTWindowsConfig generate + + +SqueakCogWindowsDebugConfig generateWithSources. +SqueakCogWindowsDebugConfig generate. + +SqueakStackWindowsConfig generateWithSources +SqueakStackWindowsConfig generate + Added: branches/Cog/image/README =================================================================== --- branches/Cog/image/README (rev 0) +++ branches/Cog/image/README 2014-05-28 15:19:56 UTC (rev 2932) @@ -0,0 +1,7 @@ +This directory contains scripts that can buld various VMMaker images. +The standard Cog VMMaker image is built loading the latest VMMaker.oscog and Cog +packages, plus support packages, into an updated Squeak trunk image. +You can build this image using buildsqueaktrunkimage.sh. +Once you start-up the image various workspaces contain useful expressions to +run the simulator, test slang output and so on. The "do..." menu off the main +screen menu also contains expressions to generate VM sources.
Added: branches/Cog/image/README.buildsqueakcmakeimage =================================================================== --- branches/Cog/image/README.buildsqueakcmakeimage (rev 0) +++ branches/Cog/image/README.buildsqueakcmakeimage 2014-05-28 15:19:56 UTC (rev 2932) @@ -0,0 +1,47 @@ +buildsqueakcmakeimage.sh is a newbie friendly script that downloads and configures either a Cog VMMaker image or a StandardVMMaker image that is completely configured for the end user to get productive quickly. +While the image is set up for CMake, the existing GNU build infrastructure is maintained. + +If by chance you have not already done so, + +svn co http://www.squeakvm.org/svn/squeak/branches/Cog will download the source tree containing this file; it exists as Cog/image/README.buildsqueakcmakimage + +Requirements to run the script are: + +svn +wget +zip +rsync + + +From withing the COG/image directory run buildsqueakcmakeimage.sh (buildsqueakcmakeimage.sh -h for usage) + +For Cog installation, the script then + downloads the appropriate squeak platform and creates CogVMMaker.image/changes and StandardVMMaker.image/changes for the Cog and Standard Interpreter respectively + installs the necessary Smalltalk classes on both images. + rsyncs the parent Cog directory as a sub-tree of the Squeak installation for use by CogVMMaker.image to an appropriate subdirectory for the version of Squeak. + The rsynced copy of the Cog svn source is then populated with a parallel cmake_xyzbuild tree where the cmake build artifacts are installed (without breaking the existing gnu build stuff) + + +To view/run your cog build system change directory to Cog/image/cogVMMaker/Squeak---.app/ and run squeakCogVMMaker.sh +The source and build directories are in Cog/image/cogVMMaker/Squeak---.app/Contents/Resources/oscogvm/ +The cmake specific build directories are created by the script and are prefaces with 'cmake_'. This was done to avoid cluttering the existing GNU build system. +After generating your build, change directory to your build directory (example: cd oscogvm/cmake_stackbuild/unixbuild/bld/) and invoke build.sh to launch cmake. + +After compilation, output files are stored in oscogvm/results + + + + +When the Standard Interpreter, no special build tree is created. The system is just set up for use as-is described at http://wiki.squeak.org/squeak/6177 +to view/run your standard build system cd to Cog/image/standardVMMaker/ + + + + + + + + + + +
Added: branches/Cog/image/VMMakerTool.text =================================================================== --- branches/Cog/image/VMMakerTool.text (rev 0) +++ branches/Cog/image/VMMakerTool.text 2014-05-28 15:19:56 UTC (rev 2932) @@ -0,0 +1,19 @@ +This image encapsulates the steps required to set up a StandardVMMaker image as described here: http://wiki.squeak.org/squeak/6177 + +Step 1. Generate the sources using VMMakerTool. + + In the big green window labeled VMMaker click the load button. + In the file selector, look for *.config files (example vm_standard_PLATFORM_min.config) this will configure the tool for that configuration. + Next to the 'Generate' Label, click the 'Entire' button to generate the sources. + (N.B. VMMakerTool is a front-end to VMMaker. As you gain experience, you will probably find it easier to utilize scripts rather than the GUI) + Read the class comments for more info: VMMakerTool browse + + +Step 2. compile the sources + Exit Squeak and create install directory, configure,make,make-install + cd ~/..Cog/image/standardVMMaker/Squeak-4.5-All-in-One.app/Contents/Resources/build + ../platforms/unix/cmake/configure –help + mkdir ~/where/I/want/the/new/vm/executable/to/be/installed, your path is your preference used in –prefix= below + ../platforms/unix/cmake/configure --prefix=~/usr/local/standardVM32/ --src=../trunk/src/ --without-gl + make + make install Added: branches/Cog/image/buildsqueakcmakeimage.sh =================================================================== --- branches/Cog/image/buildsqueakcmakeimage.sh (rev 0) +++ branches/Cog/image/buildsqueakcmakeimage.sh 2014-05-28 15:19:56 UTC (rev 2932) @@ -0,0 +1,501 @@ +#!/bin/bash -x + +# Author tty. +# 2014-05-01 +# This script downloads and configur +#Overview of script flow assuming version 4.5 +# parse options +# case statement on -v option +# clean_source_tree (not used until migration to cmake is complete and GNU-B-GONE +# create_cmake_source_tree +# get_four_five +# launch_and_configure_four_five +# run_four_five +# +# 4.6 follows same flow. +# adding new versions should be evident + + + +#begin function declarations + +show_help() { +cat << EOF +Usage: ${0##*/} [-b] [-h] [-s VERSION] [-t TRUNK] [-v VERSION] +Download and configure a Squeak image configured for Cog and/or Standard VM building. load either stable or trunk classes. + + -b Both Cog Interpreter configuration and Standard Interpreter configuration on latest stable branch + -c VERSION Cog Interpreter configuration on squeak VERSION + -h display this help and exit + -s VERSION Standard Interpreter configuration on squeak VERSION + -t Monticello source is trunk (2014-05-05 only 4.5 supported and is ignored otherwise) + + + +Example: ./buildsqueakcmakeimage -b (configure BOTH Squeak 4.6 for CMake VMMaker.oscog and configure an additional Standard Intepreter VMMaker on 4.6) + ./buildsqueakcmakeimage -c 4.5 (configure Squeak 4.5 for CMake VMMaker.oscog) + ./buildsqueakcmakeimage -c 4.5 -t (configure Squeak 4.5 for CMake VMMaker.oscog. Monticello source is trunk) + ./buildsqueakcmakeimage -c 4.6 (configure Squeak 4.6 for CMake VMMaker.oscog) + ./buildsqueakcmakeimage -s 4.5 (configure Squeak 4.5 for CMake VMMaker) + ./buildsqueakcmakeimage -s 4.6 (configure Squeak 4.6 for CMake VMMaker) + ./buildsqueakcmakeimage -c 4.6 -s (same as cmakeify -b ) + +SEE: README.buildsqueakcmakeimage for details of this script. +EOF + +} + +check_required(){ + wget --help >/dev/null || (echo 'could not find wget. you can find instructions on how to install it on google.' 1>&2; exit 1) + unzip --help >/dev/null || (echo 'could not find unzip. you can find instructions on how to install it on google.' 1>&2; exit 1) + rsync --help >/dev/null || (echo 'could not find rsync. you can find instructions on how to install it on google.' 1>&2; exit 1) + sed --help >/dev/null || (echo 'could not find sed. you can find instructions on how to install it on google.' 1>&2; exit 1) +} + +#create a parallel build tree for cmake +create_cmake_source_tree(){ + + echo $1 + cd $1 + cp -Rv cygwinbuild cmake_cygwinbuild + cp -Rv macbuild cmake_macbuild + cp -Rv nsbuild cmake_nsbuild + cp -Rv nscogbuild cmake_nscogbuild + cp -Rv nsspurcogbuild cmake_nsspurcogbuild + cp -Rv nsspurstackbuild cmake_nsspurstackbuild + cp -Rv sistamacbuild cmake_sistamacbuild + cp -Rv spurcogbuild cmake_spurcogbuild + cp -Rv spursistamacbuild cmake_spursistamacbuild + cp -Rv spurstackbuild cmake_spurstackbuild + cp -Rv stackbuild cmake_stackbuild + cp -Rv unixbuild cmake_unixbuild + + find ./cmake_* -type f -name "mvm" -exec rm -f {} ; + find ./cmake_* -type f -name "HowToBuild" -exec rm -f {} ; + + cd - +} + +clean_source_tree(){ +echo $1 + cd $1 + + find ./ -type f -name "ChangeLog" -exec rm -f {} ; + find ./ -type f -name "Makefile*" -exec rm -f {} ; + find ./ -type f -name "*README *" -exec rm -f {} ; + find ./ -type f -name "make*" -exec rm -f {} ; + find ./ -type f -name "mk*" -exec rm -f {} ; + find ./ -type f -name "mvm" -exec rm -f {} ; + find ./ -type f -name "plugins.int" -exec rm -f {} ; + find ./ -type f -name "plugins.ext" -exec rm -f {} ; + find ./ -type f -name "examplePlugins.*" -exec rm -f {} ; + find ./ -type f -name "HowToBuild" -exec rm -f {} ; + + find ./ -type f -name "*.bat" -exec rm -f {} ; + find ./ -type f -name "*.~" -exec rm -f {} ; + find ./ -type f -name "*.config" -exec rm -f {} ; + find ./ -type f -name "*.gz" -exec rm -f {} ; + find ./ -type f -name "*.in" -exec rm -f {} ; + find ./ -type f -name "*.lproj" -exec rm -f {} ; + find ./ -type f -name "*.manifest" -exec rm -f {} ; + find ./ -type f -name "*.pch" -exec rm -f {} ; + find ./ -type f -name "*.rc" -exec rm -f {} ; + find ./ -type f ( -iname "*.sh" ! -iname "buildsqueaktrunkimage.sh" ) -exec rm -f {} ; #rm .sh files except this one! (: + find ./ -type d -name "*.xcodeproj" -exec rm -Rf {} ; + find ./ -type d -name "*.lproj" -exec rm -Rf {} ; +echo $1 + cd - +} + +fourty_two(){ +echo 'Answer to the Ultimate Question of Life, the Universe, and Everything' +exit +} + + +get_four_five(){ + + cd $COGINSTALLDIRECTORY + + check_required + + wget -c http://ftp.squeak.org/4.5/$SQUEAK45ZIP +# cp ~/$SQUEAK45ZIP ./ #<--script development timesaver. do a copy instead of a wget + unzip $SQUEAK45ZIP + rm $SQUEAK45ZIP + + + cp -p $SQUEAK45.image $SQUEAK45RESOURCES/CogVMMaker.image + cp -p $SQUEAK45.changes $SQUEAK45RESOURCES/CogVMMaker.changes + + cd - +} + +launch_and_configure_four_five(){ #copy-n-paste-n-mangle from Bert's squeak.sh + + case $OS in + BSD) SQUEAK45VM="$COGINSTALLDIRECTORY/$SQUEAK45APP/Contents/MacOS/Squeak";; + Darwin) SQUEAK45VM="$COGINSTALLDIRECTORY/$SQUEAK45APP/Contents/MacOS/Squeak";; + SOLARIS*) SQUEAK45VM="$COGINSTALLDIRECTORY/$SQUEAK45APP/Contents/MacOS/Squeak";; + CYGWIN*) SQUEAK45VM="$COGINSTALLDIRECTORY/$SQUEAK45APP/SqueakConsole.exe";; + Linux) if [ "$CPU" = x86_64 ]; then + CPU=i686 + echo Running 32-bit Squeak on a 64-bit System. Hope the 32-bit runtime libraries are installed ... + fi + SQUEAK45VM="$COGINSTALLDIRECTORY/$SQUEAK45APP/Contents/$OS-$CPU/bin/squeak";; + *) echo "don't know how to run Squeak on your system. bailing out." 1>&2; exit 2 + esac + + if [ "$TRUNK" = true ]; then + SCRIPT="$APP/BuildSqueak45TrunkCMakeImage.st" + else + SCRIPT="$APP/BuildSqueak45CMakeImage.st" + fi + + if [ "$CPU" = x86_64 ] ; then + CPU=i686 + fi + + showerror() { + if [ -n "$DISPLAY" -a -x "`which kdialog 2>/dev/null`" ]; then + kdialog --error "$1" + elif [ -n "$DISPLAY" -a -x "`which zenity 2>/dev/null`" ]; then + zenity --error --text "$1" + else + dialog --msgbox "$1" 0 0 + fi + } + + if [ ! -x "$SQUEAK45VM" ] ; then + if [ ! -r "$SQUEAK45VM" ] ; then + showerror "This Squeak version does not support $OS-$CPU" + else + showerror "Squeak does not have permissions to execute" + fi + fi + + + rsync -av --progress ../* $COGINSTALLDIRECTORY/$SQUEAK45RESOURCES/oscogvm --exclude $PWD #copy Cog source tree (minus this directory) to standard dir and remove GNU build artefacts + + cd $COGINSTALLDIRECTORY/$SQUEAK45RESOURCES + ln -s oscogvm/platforms platforms #<--needed for VMMakerTool + cd - + +# clean_source_tree $COGINSTALLDIRECTORY/$SQUEAK45RESOURCES/oscogvm + create_cmake_source_tree $COGINSTALLDIRECTORY/$SQUEAK45RESOURCES/oscogvm + + cp $COGINSTALLDIRECTORY/$SQUEAK45APP/squeak.sh $COGINSTALLDIRECTORY/$SQUEAK45APP/squeakCogVMMaker.sh #create a shell script that launches our CogVMMaker.image + sed -i -e "s/$SQUEAK45IMAGE/$COGIMAGE/g" $COGINSTALLDIRECTORY/$SQUEAK45APP/squeakCogVMMaker.sh + + + cp -p *.text $COGINSTALLDIRECTORY/$SQUEAK45RESOURCES #Workspaces with helpful text + cp -p *.config $COGINSTALLDIRECTORY/$SQUEAK45RESOURCES #VMMakerTool configuration files + cp -p *.st $COGINSTALLDIRECTORY/$SQUEAK45RESOURCES #Smalltalk + + "$SQUEAK45VM" "$COGINSTALLDIRECTORY/$SQUEAK45RESOURCES/$COGIMAGE" "$SCRIPT" + +} + +get_four_five_standard_vm(){ + + + cd $STANDARDINSTALLDIRECTORY + + check_required + + if [ -d ../$COGINSTALLDIRECTORY ]; then # if it exists copy the cog stuff over for reuse and clean it up otherwise downaload via svn + cp -R ../$COGINSTALLDIRECTORY/$SQUEAK45APP ./ + rm -f $SQUEAK45RESOURCES/CogVMMaker.* + rm -Rf $SQUEAK45RESOURCES/platforms + rm -Rf $SQUEAK45RESOURCES/oscogvm + else + wget -c http://ftp.squeak.org/4.5/$SQUEAK45ZIP + unzip $SQUEAK45ZIP + rm $SQUEAK45ZIP + fi + + cp -p $SQUEAK45.image $SQUEAK45RESOURCES/StandardVMMaker.image + cp -p $SQUEAK45.changes $SQUEAK45RESOURCES/StandardVMMaker.changes + +# cp -R ~/trunk $SQUEAK45RESOURCES #<--script development timesaver. use cp instead of svn + svn co http://squeakvm.org/svn/squeak/trunk $SQUEAK45RESOURCES/trunk + + if [ -h $SQUEAK45RESOURCES/platforms ]; then + rm -f $SQUEAK45RESOURCES/platforms + fi + cd $SQUEAK45RESOURCES + ln -s trunk/platforms platforms #<--needed for VMMakerTool + mkdir build + cd - + + cd ../ + +} + +launch_and_configure_four_five_standard(){ +#echo 'http://wiki.squeak.org/squeak/6177' + case $OS in + BSD) SQUEAK45VM="$STANDARDINSTALLDIRECTORY/$SQUEAK45APP/Contents/MacOS/Squeak";; + Darwin) SQUEAK45VM="$STANDARDINSTALLDIRECTORY/$SQUEAK45APP/Contents/MacOS/Squeak";; + SOLARIS*) SQUEAK45VM="$STANDARDINSTALLDIRECTORY/$SQUEAK45APP/Contents/MacOS/Squeak";; + CYGWIN*) SQUEAK45VM="$STANDARDINSTALLDIRECTORY/$SQUEAK45APP/SqueakConsole.exe";; + Linux) if [ "$CPU" = x86_64 ]; then + CPU=i686 + echo Running 32-bit Squeak on a 64-bit System. Hope the 32-bit runtime libraries are installed ... + fi + SQUEAK45VM="$STANDARDINSTALLDIRECTORY/$SQUEAK45APP/Contents/$OS-$CPU/bin/squeak";; + *) echo "don't know how to run Squeak on your system. bailing out." 1>&2; exit 2 + esac + SCRIPT="$APP/BuildSqueakStandardImage.st" + + + cp $STANDARDINSTALLDIRECTORY/$SQUEAK45APP/squeak.sh $STANDARDINSTALLDIRECTORY/$SQUEAK45APP/squeakStandardVMMaker.sh #create a shell script that launches our CogVMMaker.image + sed -i -e "s/$SQUEAK45IMAGE/$STANDARDIMAGE/g" $STANDARDINSTALLDIRECTORY/$SQUEAK45APP/squeakStandardVMMaker.sh + + rm -f $STANDARDINSTALLDIRECTORY/$SQUEAK45APP/squeakCogVMMaker.sh #if we copied Squeak from the cogVMMaker directory, remove the cog launch script + + + cp -p *.text $STANDARDINSTALLDIRECTORY/$SQUEAK45RESOURCES #Workspaces with helpful text + cp -p *.config $STANDARDINSTALLDIRECTORY/$SQUEAK45RESOURCES #VMMakerTool configuration files + cp -p BuildSqueakStandardImage.st $STANDARDINSTALLDIRECTORY/$SQUEAK45RESOURCES #Smalltalk + + "$SQUEAK45VM" "$STANDARDINSTALLDIRECTORY/$SQUEAK45RESOURCES/$STANDARDIMAGE" "$SCRIPT" + +} +## 4.6 is not an all-in-one as of 2014-04-30 therefore, we need a cog vm +get_four_six(){ + + cd $COGINSTALLDIRECTORY + + check_required + + case $OS in #TODO windows mac etc + Linux) + + wget -c http://www.mirandabanda.org/files/Cog/VM/VM.r2776/coglinux-13.33.2776.tgz #TODO <--do I need to generalize this? + tar -xf coglinux-13.33.2776.tgz + rm -f coglinux-13.33.2776.tgz + + wget -c ftp.squeak.org/4.6alpha/$SQUEAK46ZIP + unzip $SQUEAK46ZIP -d $COGLINUX + rm $SQUEAK46ZIP + + cd $COGLINUX + cp -p $SQUEAK46.image CogVMMaker.image + cp -p $SQUEAK46.changes CogVMMaker.changes + + cd ../ + + ;; + *) echo "No Cog found. bailing out." 1>&2; exit 2 + esac + + cd ../ +} + + +launch_and_configure_four_six(){ + + cp -p BuildSqueak46CMake* $COGINSTALLDIRECTORY/coglinux + cp -p *.text $COGINSTALLDIRECTORY/coglinux + cp -p *.config $COGINSTALLDIRECTORY/coglinux + + rsync -avq --progress ../* $COGINSTALLDIRECTORY/coglinux/oscogvm --exclude $PWD #copy Cog source tree (minus this directory) to standard dir and remove GNU build artefacts + +# clean_source_tree $COGINSTALLDIRECTORY/$SQUEAK45RESOURCES/oscogvm + create_cmake_source_tree $COGINSTALLDIRECTORY/$COGLINUX/oscogvm + + + cd $COGINSTALLDIRECTORY/$COGLINUX + ln -s oscogvm/platforms platforms #<--needed for VMMakerTool + ./squeak CogVMMaker.image BuildSqueak46CMakeImage.st + cd - + + cd ../ +} + + +get_four_six_standard_vm(){ + + + + cd $STANDARDINSTALLDIRECTORY + + check_required + + if [ -d ../$COGINSTALLDIRECTORY ]; then # if it exists copy the cog stuff over for reuse and clean it up otherwise downaload via svn + cp -R ../$COGINSTALLDIRECTORY/$COGLINUX ./ + rm -f $COGLINUX/CogVMMaker.* + rm -f $COGLINUX/squeakCogVMMaker.sh + rm -Rf $COGLINUX/oscogvm + else + wget -c http://www.mirandabanda.org/files/Cog/VM/VM.r2776/coglinux-13.33.2776.tgz #TODO <--do I need to generalize this? + tar -xf coglinux-13.33.2776.tgz + rm -f coglinux-13.33.2776.tgz + + wget -c ftp.squeak.org/4.6alpha/$SQUEAK46ZIP + unzip $SQUEAK46ZIP -d $COGLINUX + rm $SQUEAK46ZIP + + cd $COGLINUX + cp -p $SQUEAK46.image StandardVMMaker.image + cp -p $SQUEAK46.changes StandardVMMaker.changes + cd ../ + fi + + +# cp -R ~/trunk $COGLINUX #<--script development timesaver. use cp instead of svn + svn co http://squeakvm.org/svn/squeak/trunk $COGLINUX/trunk + + if [ -h $COGLINUX/platforms ]; then + rm -f $COGLINUX/platforms + fi + cd $COGLINUX + ln -s trunk/platforms platforms #<--needed for VMMakerTool + mkdir build + cd - + + cd ../ + +} + +launch_and_configure_four_six_standard(){ +#echo 'http://wiki.squeak.org/squeak/6177' + + + cp -p BuildSqueakStandardImage.st $STANDARDINSTALLDIRECTORY/$COGLINUX + cp -p *.text $STANDARDINSTALLDIRECTORY/$COGLINUX + cp -p *.config $STANDARDINSTALLDIRECTORY/$COGLINUX + cd $STANDARDINSTALLDIRECTORY/$COGLINUX + ./squeak StandardVMMaker.image BuildSqueakStandardImage.st + cd - +} + + +#end function declarations +#begin script proper + +# initialize variables: + +#Flow Control Variables +APP=`dirname "$0"` +APP=`cd "$APP";pwd` +OS=`uname -s` +CPU=`uname -m` +COG=false #include cog configuration +STANDARD=false #include standard configuration +TRUNK=false #build from trunk +VERSION=4.6 +NO_ARGS=0 +E_OPTERROR=85 + +#Squeak 4.5 specific variables +SQUEAK45ZIP=Squeak-4.5-All-in-One.zip +SQUEAK45APP=Squeak-4.5-All-in-One.app +SQUEAK45RESOURCES=$SQUEAK45APP/Contents/Resources +SQUEAK45=$SQUEAK45RESOURCES/Squeak4.5-13680 +SQUEAK45IMAGE="Squeak4.5-13680.image" +SQUEAK45VM="DETERMINED IN launch_and_configure_four_five()" + +#Squeak 4.6 specific variables +SQUEAK46=Squeak4.6-13700 +SQUEAK46ZIP=$SQUEAK46.zip +COGLINUX=coglinux + +#Squeak Common variables +COGIMAGE="CogVMMaker.image" +STANDARDIMAGE="StandardVMMaker.image" +COGINSTALLDIRECTORY="cogVMMaker" #Cog buildsqueakcmakeimage end result lives here +STANDARDINSTALLDIRECTORY="standardVMMaker" #Standard Intepreter buildsqueakcmakeimage end result lives here + + + +if [ $# -eq "$NO_ARGS" ] # Script invoked with no command-line args +then + show_help + exit $E_OPTERROR # Exit and explain usage. +fi + +#parse options +OPTIND=1 +while getopts "bc:hs:t" opt; do + case "$opt" in + b) VERSION=4.5 #latest stable branch + COG=true + STANDARD=true + TRUNK=false + ;; + c) VERSION=$OPTARG + COG=true + ;; + h) + show_help + exit 0 + ;; + s) VERSION=$OPTARG + STANDARD=true + ;; + + t) TRUNK=true + ;; + + '?') +1 show_help >&2 + exit 1 + ;; + esac +done +shift "$((OPTIND-1))" # Shift off the options and optional --. + + + + +##download squeak and launch it with appropriate smalltalk script. +case "$VERSION" in + 4.5) + if [ "$COG" = true ]; then + mkdir $COGINSTALLDIRECTORY + [ "$TRUNK" == true ] && printf 'Loading Squeak version %s and configuring from trunk\n' "$VERSION" || printf 'Loading Squeak version %s\n' "$VERSION" + [ "$TRUNK" == true ] && (get_four_five $TRUNK) || (get_four_five) + launch_and_configure_four_five $TRUNK + printf 'to run CogVMMaker: cd %s; ./squeakCogVMMaker.sh\n' "$COGINSTALLDIRECTORY/$SQUEAK45APP" + fi + + if [ "$STANDARD" = true ]; then + mkdir $STANDARDINSTALLDIRECTORY + get_four_five_standard_vm + launch_and_configure_four_five_standard + printf 'to run StandardVMMaker: cd %s; ./squeakStandardVMMaker.sh\n' "$STANDARDINSTALLDIRECTORY/$SQUEAK45APP" + fi + + [ "$TRUNK" == true ] && (echo 'Squeak 4.5 Trunk installation and configuration complete. ';) || (echo 'Squeak 4.5 installation and configuration complete. ';) + ;; + 4.6) + if [ "$COG" = true ]; then + mkdir $COGINSTALLDIRECTORY + printf 'Loading Squeak version %s\n' "$VERSION" + get_four_six + launch_and_configure_four_six + + printf 'to run CogVMMaker: cd %s; squeak CogVMMaker.image' "$COGINSTALLDIRECTORY/coglinux" + fi + if [ "$STANDARD" = true ]; then + mkdir $STANDARDINSTALLDIRECTORY + get_four_six_standard_vm + launch_and_configure_four_six_standard + printf 'to run StandardVMMaker: cd %s; squeak StandardVMMaker.image' "$STANDARDINSTALLDIRECTORY/coglinux" + fi + echo 'Squeak 4.6 installation and configuration complete. '; + exit + ;; + + 42) + fourty_two; + ;; + *) echo 'version $VERSION not supported. Try 4.5 or 4.6' + exit 2 + ;; + esac + + +exit
Property changes on: branches/Cog/image/buildsqueakcmakeimage.sh ___________________________________________________________________ Added: svn:executable + *
Added: branches/Cog/image/vmm_stack_unix_max.config =================================================================== --- branches/Cog/image/vmm_stack_unix_max.config (rev 0) +++ branches/Cog/image/vmm_stack_unix_max.config 2014-05-28 15:19:56 UTC (rev 2932) @@ -0,0 +1,50 @@ +#(#(#ADPCMCodecPlugin +#AsynchFilePlugin +#BMPReadWriterPlugin +#CameraPlugin +#CroquetPlugin +#DSAPlugin +#DeflatePlugin +#DropPlugin +#FFIPlugin +#FFTPlugin +#FileCopyPlugin +#FilePlugin +#FloatArrayPlugin +#FloatMathPlugin +#IA32ABIPlugin +#JPEGReadWriter2Plugin +#JPEGReaderPlugin +#JoystickTabletPlugin +#KlattSynthesizerPlugin +#LargeIntegersPlugin +#LocalePlugin +#MIDIPlugin +#Matrix2x3Plugin +#MiscPrimitivePlugin +#Mpeg3Plugin +#RePlugin +#SecurityPlugin +#SerialPlugin +#SocketPlugin +#SoundCodecPlugin +#SoundGenerationPlugin +#SoundPlugin +#SqueakSSLPlugin +#StarSqueakPlugin +#UUIDPlugin +#UnicodePlugin +#UnixAioPlugin +#UnixOSProcessPlugin +) +#() +true +false +'unix' +'oscogvm/stacksrc' +'platforms' +4 +true +true +'StackInterpreter' +) \ No newline at end of file
Added: branches/Cog/image/vmm_stack_unix_min.config =================================================================== --- branches/Cog/image/vmm_stack_unix_min.config (rev 0) +++ branches/Cog/image/vmm_stack_unix_min.config 2014-05-28 15:19:56 UTC (rev 2932) @@ -0,0 +1,19 @@ +#(#(#ADPCMCodecPlugin +#AsynchFilePlugin +#B2DPlugin +# BitBltPlugin \ +#FilePlugin +#MiscPrimitivePlugin +#SocketPlugin +) +#() +true +false +'unix' +'oscogvm/stacksrc' +'platforms' +4 +true +true +'StackInterpreter' +) \ No newline at end of file
Added: branches/Cog/image/vmm_standard_unix_max.config =================================================================== --- branches/Cog/image/vmm_standard_unix_max.config (rev 0) +++ branches/Cog/image/vmm_standard_unix_max.config 2014-05-28 15:19:56 UTC (rev 2932) @@ -0,0 +1,50 @@ +#(#(#ADPCMCodecPlugin +#AsynchFilePlugin +#BMPReadWriterPlugin +#CameraPlugin +#CroquetPlugin +#DSAPlugin +#DeflatePlugin +#DropPlugin +#FFIPlugin +#FFTPlugin +#FileCopyPlugin +#FilePlugin +#FloatArrayPlugin +#FloatMathPlugin +#IA32ABIPlugin +#JPEGReadWriter2Plugin +#JPEGReaderPlugin +#JoystickTabletPlugin +#KlattSynthesizerPlugin +#LargeIntegersPlugin +#LocalePlugin +#MIDIPlugin +#Matrix2x3Plugin +#MiscPrimitivePlugin +#Mpeg3Plugin +#RePlugin +#SecurityPlugin +#SerialPlugin +#SocketPlugin +#SoundCodecPlugin +#SoundGenerationPlugin +#SoundPlugin +#SqueakSSLPlugin +#StarSqueakPlugin +#UUIDPlugin +#UnicodePlugin +#UnixAioPlugin +#UnixOSProcessPlugin +) +#() +true +false +'unix' +'trunk/src' +'platforms' +4 +true +true +'Interpreter' +) \ No newline at end of file
Added: branches/Cog/image/vmm_standard_unix_min.config =================================================================== --- branches/Cog/image/vmm_standard_unix_min.config (rev 0) +++ branches/Cog/image/vmm_standard_unix_min.config 2014-05-28 15:19:56 UTC (rev 2932) @@ -0,0 +1,19 @@ +#(#(#ADPCMCodecPlugin +#AsynchFilePlugin +#B2DPlugin +# BitBltPlugin \ +#FilePlugin +#MiscPrimitivePlugin +#SocketPlugin +) +#() +true +false +'unix' +'trunk/src' +'platforms' +4 +true +true +'Interpreter' +) \ No newline at end of file
Modified: branches/Cog/nscogsrc/vm/cogit.c =================================================================== --- branches/Cog/nscogsrc/vm/cogit.c 2014-05-26 20:28:22 UTC (rev 2931) +++ branches/Cog/nscogsrc/vm/cogit.c 2014-05-28 15:19:56 UTC (rev 2932) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 + CCodeGenerator VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa from - StackToRegisterMappingCogit VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 + StackToRegisterMappingCogit VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa " __DATE__ ; char *__cogitBuildInfo = __buildInfo;
@@ -13749,6 +13749,7 @@ genoperandoperand(CmpCqR, 0, ReceiverResultReg); /* begin JumpNonZero: */ jumpSICMiss = genoperand(JumpNonZero, ((sqInt)0)); + compileTrampolineForcallJumpBarnumArgsargargargargsaveRegsresultReg(ceStackOverflow, 1, 1, SendNumArgsReg, null, null, null, 0, null); jmpTarget(jumpSICMiss, gLabel()); genPushRegisterArgsForAbortMissNumArgs(backEnd, numArgs);
Modified: branches/Cog/nscogsrc/vm/cogit.h =================================================================== --- branches/Cog/nscogsrc/vm/cogit.h 2014-05-26 20:28:22 UTC (rev 2931) +++ branches/Cog/nscogsrc/vm/cogit.h 2014-05-28 15:19:56 UTC (rev 2932) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 + CCodeGenerator VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa */
Modified: branches/Cog/nscogsrc/vm/cogmethod.h =================================================================== --- branches/Cog/nscogsrc/vm/cogmethod.h 2014-05-26 20:28:22 UTC (rev 2931) +++ branches/Cog/nscogsrc/vm/cogmethod.h 2014-05-28 15:19:56 UTC (rev 2932) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 + CCodeGenerator VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa */
typedef struct {
Modified: branches/Cog/nsspursrc/vm/cogit.c =================================================================== --- branches/Cog/nsspursrc/vm/cogit.c 2014-05-26 20:28:22 UTC (rev 2931) +++ branches/Cog/nsspursrc/vm/cogit.c 2014-05-28 15:19:56 UTC (rev 2932) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 + CCodeGenerator VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa from - StackToRegisterMappingCogit VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 + StackToRegisterMappingCogit VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa */ -static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 " __DATE__ ; +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa " __DATE__ ; char *__cogitBuildInfo = __buildInfo;
@@ -15040,6 +15040,7 @@ genoperandoperand(CmpCqR, 0, ReceiverResultReg); /* begin JumpNonZero: */ jumpSICMiss = genoperand(JumpNonZero, ((sqInt)0)); + compileTrampolineForcallJumpBarnumArgsargargargargsaveRegsresultReg(ceStackOverflow, 1, 1, SendNumArgsReg, null, null, null, 0, null); jmpTarget(jumpSICMiss, gLabel()); genPushRegisterArgsForAbortMissNumArgs(backEnd, numArgs);
Modified: branches/Cog/nsspursrc/vm/cogit.h =================================================================== --- branches/Cog/nsspursrc/vm/cogit.h 2014-05-26 20:28:22 UTC (rev 2931) +++ branches/Cog/nsspursrc/vm/cogit.h 2014-05-28 15:19:56 UTC (rev 2932) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 + CCodeGenerator VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa */
Modified: branches/Cog/nsspursrc/vm/cogmethod.h =================================================================== --- branches/Cog/nsspursrc/vm/cogmethod.h 2014-05-26 20:28:22 UTC (rev 2931) +++ branches/Cog/nsspursrc/vm/cogmethod.h 2014-05-28 15:19:56 UTC (rev 2932) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGenerator VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 + CCodeGenerator VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa */
typedef struct {
Modified: branches/Cog/nsspursrc/vm/cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.c 2014-05-26 20:28:22 UTC (rev 2931) +++ branches/Cog/nsspursrc/vm/cointerp.c 2014-05-28 15:19:56 UTC (rev 2932) @@ -1,9 +1,9 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa from - CoInterpreter VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 + CoInterpreter VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -1480,9 +1480,9 @@ _iss sqInt rememberedSetSize; _iss unsigned char primTraceLogIndex; _iss SpurContiguousObjStack unscannedEphemerons; -_iss sqInt firstFreeChunk; _iss StackPage * mostRecentlyUsedPage; _iss SpurNewSpaceSpace pastSpace; +_iss sqInt firstFreeChunk; _iss sqInt numStackPages; _iss usqInt newSpaceStart; _iss sqInt classTableFirstPage; @@ -1517,6 +1517,7 @@ _iss sqInt lastMethodCacheProbeWrite; _iss sqInt lkupClass; _iss sqInt backwardJumpCount; +_iss sqInt lastFreeChunk; _iss sqInt metaclassNumSlots; _iss usqLong nextWakeupUsecs; _iss sqInt preemptionYields; @@ -1546,7 +1547,6 @@ _iss sqInt thisClassIndex; _iss sqInt fullScreenFlag; _iss sqInt interruptPending; -_iss sqInt lastFreeChunk; _iss sqInt lastHash; _iss sqInt longRunningPrimitiveCheckSequenceNumber; _iss sqInt marking; @@ -2230,7 +2230,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.733"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.734"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace;
@@ -22741,7 +22741,6 @@ sqInt i; sqInt low; sqInt nextFree; - sqInt nextFree1; usqInt numSlots; usqInt numSlots1; sqInt prevFree; @@ -22762,12 +22761,7 @@ free = GIV(lastFreeChunk); prevPrevFree = (prevFree = 0); while (free != 0) { - nextFree = (longAt((free + (BaseHeaderSize)) + (0 << 2))) ^ prevFree; - assert((free == 0) - || (isFreeObject(free))); - assert((prevFree == 0) - || (prevFree > free)); - + ; /* begin addressAfter: */ /* begin numSlotsOfAny: */ numSlots1 = byteAt(free + 7); @@ -22793,31 +22787,25 @@ } }
- assert((prevFree == 0) - || (isFreeObject(prevFree))); - assert((prevPrevFree == 0) - || (isFreeObject(prevPrevFree))); - if (!(((longAt(free)) & 0x3FFFFF) == 0)) { - free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree; + if (prevFree == 0) { + assert(free == GIV(lastFreeChunk)); + prevFree = GIV(lastFreeChunk); + free = (longAt((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2))) ^ 0; } - if ((nextFree == 0) - || (((longAt(nextFree)) & 0x3FFFFF) == 0)) { - prevPrevFree = prevFree; - prevFree = free; - free = (prevFree == GIV(firstFreeChunk) - ? 0 - : nextFree); - } else { - free = GIV(lastFreeChunk); - prevPrevFree = (prevFree = 0); - while (free > nextFree) { - nextFree = (longAt((free + (BaseHeaderSize)) + (0 << 2))) ^ prevFree; - assert(isFreeObject(nextFree)); + assert(isFreeObject(prevFree)); + if (prevPrevFree == 0) { + assert(free == (nextInSortedFreeListLinkgiven(GIV(lastFreeChunk), 0))); + prevPrevFree = GIV(lastFreeChunk); + prevFree = (longAt((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2))) ^ 0; + } + else { + assert(isFreeObject(prevPrevFree)); + free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree; prevPrevFree = prevFree; prevFree = free; - free = nextFree; } + free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree; } } null; @@ -22830,11 +22818,11 @@ free1 = GIV(firstFreeChunk); prevPrevFree1 = (prevFree1 = 0); while (free1 != 0) { - nextFree1 = (longAt((free1 + (BaseHeaderSize)) + (0 << 2))) ^ prevFree1; + nextFree = (longAt((free1 + (BaseHeaderSize)) + (0 << 2))) ^ prevFree1; assert(isFreeObject(free1)); - assert((nextFree1 == 0) - || ((nextFree1 > free1) - && (isFreeObject(nextFree1)))); + assert((nextFree == 0) + || ((nextFree > free1) + && (isFreeObject(nextFree)))); assert((prevFree1 == 0) || (prevFree1 < free1)); bytes = bytesInObject(free1); @@ -22847,7 +22835,7 @@
prevPrevFree1 = prevFree1; prevFree1 = free1; - free1 = nextFree1; + free1 = nextFree; } /* begin checkFreeSpace */ assert(bitsSetInFreeSpaceMaskForAllFreeLists());
Modified: branches/Cog/nsspursrc/vm/cointerp.h =================================================================== --- branches/Cog/nsspursrc/vm/cointerp.h 2014-05-26 20:28:22 UTC (rev 2931) +++ branches/Cog/nsspursrc/vm/cointerp.h 2014-05-28 15:19:56 UTC (rev 2932) @@ -1,5 +1,5 @@ /* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa */
Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c =================================================================== --- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2014-05-26 20:28:22 UTC (rev 2931) +++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c 2014-05-28 15:19:56 UTC (rev 2932) @@ -2,11 +2,11 @@
/* Automatically generated by - CCodeGeneratorGlobalStructure VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 + CCodeGeneratorGlobalStructure VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa from - CoInterpreter VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 + CoInterpreter VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa */ -static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.733 uuid: 6d38bb55-fe48-480d-a606-d577925a2785 " __DATE__ ; +static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.734 uuid: d6a50836-2b47-4425-a81b-07dcc902faaa " __DATE__ ; char *__interpBuildInfo = __buildInfo;
@@ -1483,9 +1483,9 @@ _iss sqInt rememberedSetSize; _iss unsigned char primTraceLogIndex; _iss SpurContiguousObjStack unscannedEphemerons; -_iss sqInt firstFreeChunk; _iss StackPage * mostRecentlyUsedPage; _iss SpurNewSpaceSpace pastSpace; +_iss sqInt firstFreeChunk; _iss sqInt numStackPages; _iss usqInt newSpaceStart; _iss sqInt classTableFirstPage; @@ -1520,6 +1520,7 @@ _iss sqInt lastMethodCacheProbeWrite; _iss sqInt lkupClass; _iss sqInt backwardJumpCount; +_iss sqInt lastFreeChunk; _iss sqInt metaclassNumSlots; _iss usqLong nextWakeupUsecs; _iss sqInt preemptionYields; @@ -1549,7 +1550,6 @@ _iss sqInt thisClassIndex; _iss sqInt fullScreenFlag; _iss sqInt interruptPending; -_iss sqInt lastFreeChunk; _iss sqInt lastHash; _iss sqInt longRunningPrimitiveCheckSequenceNumber; _iss sqInt marking; @@ -2233,7 +2233,7 @@ /* 574 */ (void (*)(void))0, /* 575 */ (void (*)(void))0, 0 }; -const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.733"; +const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.734"; sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */; volatile int sendTrace;
@@ -22750,7 +22750,6 @@ sqInt i; sqInt low; sqInt nextFree; - sqInt nextFree1; usqInt numSlots; usqInt numSlots1; sqInt prevFree; @@ -22771,12 +22770,7 @@ free = GIV(lastFreeChunk); prevPrevFree = (prevFree = 0); while (free != 0) { - nextFree = (longAt((free + (BaseHeaderSize)) + (0 << 2))) ^ prevFree; - assert((free == 0) - || (isFreeObject(free))); - assert((prevFree == 0) - || (prevFree > free)); - + ; /* begin addressAfter: */ /* begin numSlotsOfAny: */ numSlots1 = byteAt(free + 7); @@ -22802,31 +22796,25 @@ } }
- assert((prevFree == 0) - || (isFreeObject(prevFree))); - assert((prevPrevFree == 0) - || (isFreeObject(prevPrevFree))); - if (!(((longAt(free)) & 0x3FFFFF) == 0)) { - free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree; + if (prevFree == 0) { + assert(free == GIV(lastFreeChunk)); + prevFree = GIV(lastFreeChunk); + free = (longAt((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2))) ^ 0; } - if ((nextFree == 0) - || (((longAt(nextFree)) & 0x3FFFFF) == 0)) { - prevPrevFree = prevFree; - prevFree = free; - free = (prevFree == GIV(firstFreeChunk) - ? 0 - : nextFree); - } else { - free = GIV(lastFreeChunk); - prevPrevFree = (prevFree = 0); - while (free > nextFree) { - nextFree = (longAt((free + (BaseHeaderSize)) + (0 << 2))) ^ prevFree; - assert(isFreeObject(nextFree)); + assert(isFreeObject(prevFree)); + if (prevPrevFree == 0) { + assert(free == (nextInSortedFreeListLinkgiven(GIV(lastFreeChunk), 0))); + prevPrevFree = GIV(lastFreeChunk); + prevFree = (longAt((GIV(lastFreeChunk) + (BaseHeaderSize)) + (0 << 2))) ^ 0; + } + else { + assert(isFreeObject(prevPrevFree)); + free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree; prevPrevFree = prevFree; prevFree = free; - free = nextFree; } + free = (longAt((prevFree + (BaseHeaderSize)) + (0 << 2))) ^ prevPrevFree; } } null; @@ -22839,11 +22827,11 @@ free1 = GIV(firstFreeChunk); prevPrevFree1 = (prevFree1 = 0); while (free1 != 0) { - nextFree1 = (longAt((free1 + (BaseHeaderSize)) + (0 << 2))) ^ prevFree1; + nextFree = (longAt((free1 + (BaseHeaderSize)) + (0 << 2))) ^ prevFree1; assert(isFreeObject(free1)); - assert((nextFree1 == 0) - || ((nextFree1 > free1) - && (isFreeObject(nextFree1)))); + assert((nextFree == 0) + || ((nextFree > free1) + && (isFreeObject(nextFree)))); assert((prevFree1 == 0) || (prevFree1 < free1)); bytes = bytesInObject(free1);
@@ Diff output truncated at 50000 characters. @@
vm-dev@lists.squeakfoundation.org