Revision: 3425 Author: eliot Date: 2015-08-19 16:57:42 -0700 (Wed, 19 Aug 2015) Log Message: ----------- Add EnforceAccessControl=false versions of the Newspeak 32-bit Cog & Stack Spur VMs for Cadence use. Add builds to macos32x86 and linux32x86.
Modified Paths: -------------- branches/Cog/build.macos32x86/glue.cog.spur/CoreVM.xcodeproj/project.pbxproj branches/Cog/build.macos32x86/glue.cog.spur/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj branches/Cog/build.macos32x86/glue.cog.spur/UnixOSProcessPlugin/UnixOSProcessPlugin.xcodeproj/project.pbxproj branches/Cog/build.macos32x86/glue.stack.spur/CoreVM.xcodeproj/project.pbxproj branches/Cog/build.macos32x86/glue.stack.spur/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj branches/Cog/build.macos32x86/glue.stack.spur/UnixOSProcessPlugin/UnixOSProcessPlugin.xcodeproj/project.pbxproj
Added Paths: ----------- branches/Cog/build.linux32x86/glue.cog.spur/ branches/Cog/build.linux32x86/glue.cog.spur/build/ branches/Cog/build.linux32x86/glue.cog.spur/build/mvm branches/Cog/build.linux32x86/glue.cog.spur/build.assert/ branches/Cog/build.linux32x86/glue.cog.spur/build.assert/mvm branches/Cog/build.linux32x86/glue.cog.spur/build.assert.itimerheartbeat/ branches/Cog/build.linux32x86/glue.cog.spur/build.assert.itimerheartbeat/mvm branches/Cog/build.linux32x86/glue.cog.spur/build.debug/ branches/Cog/build.linux32x86/glue.cog.spur/build.debug/mvm branches/Cog/build.linux32x86/glue.cog.spur/build.debug.itimerheartbeat/ branches/Cog/build.linux32x86/glue.cog.spur/build.debug.itimerheartbeat/mvm branches/Cog/build.linux32x86/glue.cog.spur/build.itimerheartbeat/ branches/Cog/build.linux32x86/glue.cog.spur/build.itimerheartbeat/mvm branches/Cog/build.linux32x86/glue.cog.spur/makeallclean branches/Cog/build.linux32x86/glue.cog.spur/makealldirty branches/Cog/build.linux32x86/glue.cog.spur/plugins.ext branches/Cog/build.linux32x86/glue.cog.spur/plugins.int branches/Cog/build.macos32x86/glue.cog.spur/ branches/Cog/build.macos32x86/glue.stack.spur/ branches/Cog/nsnacspursrc/ branches/Cog/nsnacspursrc/examplePlugins.ext branches/Cog/nsnacspursrc/examplePlugins.int branches/Cog/nsnacspursrc/vm/ branches/Cog/nsnacspursrc/vm/cogit.c branches/Cog/nsnacspursrc/vm/cogit.h branches/Cog/nsnacspursrc/vm/cogitARMv5.c branches/Cog/nsnacspursrc/vm/cogitIA32.c branches/Cog/nsnacspursrc/vm/cogmethod.h branches/Cog/nsnacspursrc/vm/cointerp.c branches/Cog/nsnacspursrc/vm/cointerp.h branches/Cog/nsnacspursrc/vm/exampleSqNamedPrims.h branches/Cog/nsnacspursrc/vm/gcc3x-cointerp.c branches/Cog/nsnacspursrc/vm/interp.h branches/Cog/nsnacspursrc/vm/nssendcache.h branches/Cog/nsnacspursrc/vm/vmCallback.h branches/Cog/nsnacspurstacksrc/ branches/Cog/nsnacspurstacksrc/examplePlugins.ext branches/Cog/nsnacspurstacksrc/examplePlugins.int branches/Cog/nsnacspurstacksrc/vm/ branches/Cog/nsnacspurstacksrc/vm/exampleSqNamedPrims.h branches/Cog/nsnacspurstacksrc/vm/gcc3x-interp.c branches/Cog/nsnacspurstacksrc/vm/interp.c branches/Cog/nsnacspurstacksrc/vm/interp.h branches/Cog/nsnacspurstacksrc/vm/vmCallback.h
Removed Paths: ------------- branches/Cog/build.linux32x86/newspeak.cog.v3/
Property Changed: ---------------- branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Added: branches/Cog/build.linux32x86/glue.cog.spur/build/mvm =================================================================== --- branches/Cog/build.linux32x86/glue.cog.spur/build/mvm (rev 0) +++ branches/Cog/build.linux32x86/glue.cog.spur/build/mvm 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,39 @@ +#!/bin/bash +# VM with VM profiler and threaded heartbeat +INSTALLDIR=nsnaccogspurlinuxht +# Some gcc versions create a broken VM using -O2 +case `gcc -v 2>&1 | grep version | sed 's/gcc version *//'` in +3.4.*) OPT="-g -O1 -fwrapv -DNDEBUG -DDEBUGVM=0";; +*) OPT="-g -O2 -DNDEBUG -DDEBUGVM=0";; +esac + +if [ $# -ge 1 ]; then + case "$1" in + -*) ;; + *) INSTALLDIR="$1"; shift + esac +fi + +echo -n "clean? " +read a +case $a in +n|no|N|NO) echo "ok but this isn't safe!!";; +*) rm config.h; test -f Makefile && make reallyclean +esac +test -f plugins.int || (test -f ../plugins.int && cp -p ../plugins.int . || cp -p ../../plugins.int .) +test -f plugins.ext || (test -f ../plugins.ext && cp -p ../plugins.ext . || cp -p ../../plugins.ext .) +test -f config.h || ../../../platforms/unix/config/configure \ + --with-vmversion=5.0 \ + --with-src=nsnacspursrc --with-plugins=nsspursrc/plugins \ + --without-vm-display-fbdev --without-npsqueak \ + CC="gcc -m32" \ + CXX="g++ -m32" \ + CFLAGS="$OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" \ + LIBS="-lpthread -luuid" \ + LDFLAGS=-Wl,-z,now +rm -f vm/sqUnixMain.o # nuke version info +rm -rf ../../../products/$INSTALLDIR +# prefer make install prefix=`readlink -f `pwd`/../../../products/$INSTALLDIR` +# but older linux readlinks lack the -f flag +make install-squeak install-plugins prefix=`(cd ../../../;pwd)`/products/$INSTALLDIR 2>&1 | tee LOG +../../editnewspeakinstall.sh ../../../products/$INSTALLDIR "$@"
Property changes on: branches/Cog/build.linux32x86/glue.cog.spur/build/mvm ___________________________________________________________________ Added: svn:executable + *
Added: branches/Cog/build.linux32x86/glue.cog.spur/build.assert/mvm =================================================================== --- branches/Cog/build.linux32x86/glue.cog.spur/build.assert/mvm (rev 0) +++ branches/Cog/build.linux32x86/glue.cog.spur/build.assert/mvm 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,35 @@ +#!/bin/bash +# assert Spur VM with VM profiler and threaded heartbeat +INSTALLDIR=assert/nsnaccogspurlinuxht +OPT="-g3 -O1 -fwrapv -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -DDEBUGVM=0" + +if [ $# -ge 1 ]; then + case "$1" in + -*) ;; + *) INSTALLDIR="$1"; shift + esac +fi + +echo -n "clean? " +read a +case $a in +n|no|N|NO) echo "ok but this isn't safe!!";; +*) rm config.h; test -f Makefile && make reallyclean +esac +test -f plugins.int || (test -f ../plugins.int && cp -p ../plugins.int . || cp -p ../../plugins.int .) +test -f plugins.ext || (test -f ../plugins.ext && cp -p ../plugins.ext . || cp -p ../../plugins.ext .) +test -f config.h || ../../../platforms/unix/config/configure \ + --with-vmversion=5.0 \ + --with-src=nsnacspursrc --with-plugins=nsspursrc/plugins \ + --without-vm-display-fbdev --without-npsqueak \ + CC="gcc -m32" \ + CXX="g++ -m32" \ + CFLAGS="$OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" \ + LIBS="-lpthread -luuid" \ + LDFLAGS=-Wl,-z,now +rm -f vm/sqUnixMain.o # nuke version info +rm -rf ../../../products/$INSTALLDIR +# prefer make install prefix=`readlink -f `pwd`/../../../products/$INSTALLDIR` +# but older linux readlinks lack the -f flag +make install-squeak install-plugins prefix=`(cd ../../../;pwd)`/products/$INSTALLDIR 2>&1 | tee LOG +../../editnewspeakinstall.sh ../../../products/$INSTALLDIR "$@"
Property changes on: branches/Cog/build.linux32x86/glue.cog.spur/build.assert/mvm ___________________________________________________________________ Added: svn:executable + *
Added: branches/Cog/build.linux32x86/glue.cog.spur/build.assert.itimerheartbeat/mvm =================================================================== --- branches/Cog/build.linux32x86/glue.cog.spur/build.assert.itimerheartbeat/mvm (rev 0) +++ branches/Cog/build.linux32x86/glue.cog.spur/build.assert.itimerheartbeat/mvm 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,33 @@ +#!/bin/bash +# assert Spur VM with VM profiler and itimer heartbeat +INSTALLDIR=assert/nsnaccogspurlinux +OPT="-g3 -O1 -fwrapv -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -DDEBUGVM=0" + +if [ $# -ge 1 ]; then + case "$1" in + -*) ;; + *) INSTALLDIR="$1"; shift + esac +fi + +echo -n "clean? " +read a +case $a in +n|no|N|NO) echo "ok but this isn't safe!!";; +*) rm config.h; test -f Makefile && make reallyclean +esac +test -f plugins.int || (test -f ../plugins.int && cp -p ../plugins.int . || cp -p ../../plugins.int .) +test -f plugins.ext || (test -f ../plugins.ext && cp -p ../plugins.ext . || cp -p ../../plugins.ext .) +test -f config.h || ../../../platforms/unix/config/configure \ + --with-vmversion=5.0 \ + --with-src=nsnacspursrc --with-plugins=nsspursrc/plugins \ + --without-vm-display-fbdev --without-npsqueak \ + CC="gcc -m32" \ + CXX="g++ -m32" \ + CFLAGS="$OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1" \ + LIBS="-lpthread -luuid" \ + LDFLAGS=-Wl,-z,now +rm -f vm/sqUnixMain.o # nuke version info +rm -rf ../../../products/$INSTALLDIR +make install-squeak install-plugins prefix=`(cd ../../../;pwd)`/products/$INSTALLDIR 2>&1 | tee LOG +../../editnewspeakinstall.sh ../../../products/$INSTALLDIR "$@"
Property changes on: branches/Cog/build.linux32x86/glue.cog.spur/build.assert.itimerheartbeat/mvm ___________________________________________________________________ Added: svn:executable + *
Added: branches/Cog/build.linux32x86/glue.cog.spur/build.debug/mvm =================================================================== --- branches/Cog/build.linux32x86/glue.cog.spur/build.debug/mvm (rev 0) +++ branches/Cog/build.linux32x86/glue.cog.spur/build.debug/mvm 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,35 @@ +#!/bin/bash +# debug Spur VM with VM profiler and threaded heartbeat +INSTALLDIR=debug/nsnaccogspurlinuxht +OPT="-g3 -O0 -fwrapv -DDEBUGVM=1" + +if [ $# -ge 1 ]; then + case "$1" in + -*) ;; + *) INSTALLDIR="$1"; shift + esac +fi + +echo -n "clean? " +read a +case $a in +n|no|N|NO) echo "ok but this isn't safe!!";; +*) rm config.h; test -f Makefile && make reallyclean +esac +test -f plugins.int || (test -f ../plugins.int && cp -p ../plugins.int . || cp -p ../../plugins.int .) +test -f plugins.ext || (test -f ../plugins.ext && cp -p ../plugins.ext . || cp -p ../../plugins.ext .) +test -f config.h || ../../../platforms/unix/config/configure \ + --with-vmversion=5.0 \ + --with-src=nsnacspursrc --with-plugins=nsspursrc/plugins \ + --without-vm-display-fbdev --without-npsqueak \ + CC="gcc -m32" \ + CXX="g++ -m32" \ + CFLAGS="$OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" \ + LIBS="-lpthread -luuid" \ + LDFLAGS=-Wl,-z,now +rm -f vm/sqUnixMain.o # nuke version info +rm -rf ../../../products/$INSTALLDIR +# prefer make install prefix=`readlink -f `pwd`/../../../products/$INSTALLDIR` +# but older linux readlinks lack the -f flag +make install-squeak install-plugins prefix=`(cd ../../../;pwd)`/products/$INSTALLDIR 2>&1 | tee LOG +../../editnewspeakinstall.sh ../../../products/$INSTALLDIR "$@"
Property changes on: branches/Cog/build.linux32x86/glue.cog.spur/build.debug/mvm ___________________________________________________________________ Added: svn:executable + *
Added: branches/Cog/build.linux32x86/glue.cog.spur/build.debug.itimerheartbeat/mvm =================================================================== --- branches/Cog/build.linux32x86/glue.cog.spur/build.debug.itimerheartbeat/mvm (rev 0) +++ branches/Cog/build.linux32x86/glue.cog.spur/build.debug.itimerheartbeat/mvm 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,33 @@ +#!/bin/bash +# debug Spur VM with VM profiler and itimer heartbeat +INSTALLDIR=debug/nsnaccogspurlinux +OPT="-g3 -O0 -fwrapv -DDEBUGVM=1" + +if [ $# -ge 1 ]; then + case "$1" in + -*) ;; + *) INSTALLDIR="$1"; shift + esac +fi + +echo -n "clean? " +read a +case $a in +n|no|N|NO) echo "ok but this isn't safe!!";; +*) rm config.h; test -f Makefile && make reallyclean +esac +test -f plugins.int || (test -f ../plugins.int && cp -p ../plugins.int . || cp -p ../../plugins.int .) +test -f plugins.ext || (test -f ../plugins.ext && cp -p ../plugins.ext . || cp -p ../../plugins.ext .) +test -f config.h || ../../../platforms/unix/config/configure \ + --with-vmversion=5.0 \ + --with-src=nsnacspursrc --with-plugins=nsspursrc/plugins \ + --without-vm-display-fbdev --without-npsqueak \ + CC="gcc -m32" \ + CXX="g++ -m32" \ + CFLAGS="$OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1" \ + LIBS="-lpthread -luuid" \ + LDFLAGS=-Wl,-z,now +rm -f vm/sqUnixMain.o # nuke version info +rm -rf ../../../products/$INSTALLDIR +make install-squeak install-plugins prefix=`(cd ../../../;pwd)`/products/$INSTALLDIR 2>&1 | tee LOG +../../editnewspeakinstall.sh ../../../products/$INSTALLDIR "$@"
Property changes on: branches/Cog/build.linux32x86/glue.cog.spur/build.debug.itimerheartbeat/mvm ___________________________________________________________________ Added: svn:executable + *
Added: branches/Cog/build.linux32x86/glue.cog.spur/build.itimerheartbeat/mvm =================================================================== --- branches/Cog/build.linux32x86/glue.cog.spur/build.itimerheartbeat/mvm (rev 0) +++ branches/Cog/build.linux32x86/glue.cog.spur/build.itimerheartbeat/mvm 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,37 @@ +#!/bin/bash +# Spur VM with VM profiler and itimer heartbeat +INSTALLDIR=nsnaccogspurlinux +# Some gcc versions create a broken VM using -O2 +case `gcc -v 2>&1 | grep version | sed 's/gcc version *//'` in +3.4.*) OPT="-g -O1 -fwrapv -DNDEBUG -DDEBUGVM=0";; +*) OPT="-g -O2 -DNDEBUG -DDEBUGVM=0";; +esac + +if [ $# -ge 1 ]; then + case "$1" in + -*) ;; + *) INSTALLDIR="$1"; shift + esac +fi + +echo -n "clean? " +read a +case $a in +n|no|N|NO) echo "ok but this isn't safe!!";; +*) rm config.h; test -f Makefile && make reallyclean +esac +test -f plugins.int || (test -f ../plugins.int && cp -p ../plugins.int . || cp -p ../../plugins.int .) +test -f plugins.ext || (test -f ../plugins.ext && cp -p ../plugins.ext . || cp -p ../../plugins.ext .) +test -f config.h || ../../../platforms/unix/config/configure \ + --with-vmversion=5.0 \ + --with-src=nsnacspursrc --with-plugins=nsspursrc/plugins \ + --without-vm-display-fbdev --without-npsqueak \ + CC="gcc -m32" \ + CXX="g++ -m32" \ + CFLAGS="$OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1" \ + LIBS="-lpthread -luuid" \ + LDFLAGS=-Wl,-z,now +rm -f vm/sqUnixMain.o # nuke version info +rm -rf ../../../products/$INSTALLDIR +make install-squeak install-plugins prefix=`(cd ../../../;pwd)`/products/$INSTALLDIR 2>&1 | tee LOG +../../editnewspeakinstall.sh ../../../products/$INSTALLDIR "$@"
Property changes on: branches/Cog/build.linux32x86/glue.cog.spur/build.itimerheartbeat/mvm ___________________________________________________________________ Added: svn:executable + *
Added: branches/Cog/build.linux32x86/glue.cog.spur/makeallclean =================================================================== --- branches/Cog/build.linux32x86/glue.cog.spur/makeallclean (rev 0) +++ branches/Cog/build.linux32x86/glue.cog.spur/makeallclean 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,6 @@ +#!/bin/sh +trap 'exit 2' HUP INT PIPE TERM +for d in `dirname $0`/build*; do + (cd $d + echo y | ./mvm "$@") +done
Property changes on: branches/Cog/build.linux32x86/glue.cog.spur/makeallclean ___________________________________________________________________ Added: svn:executable + *
Added: branches/Cog/build.linux32x86/glue.cog.spur/makealldirty =================================================================== --- branches/Cog/build.linux32x86/glue.cog.spur/makealldirty (rev 0) +++ branches/Cog/build.linux32x86/glue.cog.spur/makealldirty 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,6 @@ +#!/bin/sh +trap 'exit 2' HUP INT PIPE TERM +for d in `dirname $0`/build*; do + (cd $d + echo n | ./mvm "$@") +done
Property changes on: branches/Cog/build.linux32x86/glue.cog.spur/makealldirty ___________________________________________________________________ Added: svn:executable + *
Added: branches/Cog/build.linux32x86/glue.cog.spur/plugins.ext =================================================================== --- branches/Cog/build.linux32x86/glue.cog.spur/plugins.ext (rev 0) +++ branches/Cog/build.linux32x86/glue.cog.spur/plugins.ext 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,3 @@ +# Copied, perhaps edited, from ../../../nscogsrc/examplePlugins.ext +EXTERNAL_PLUGINS = \ +SqueakSSL
Added: branches/Cog/build.linux32x86/glue.cog.spur/plugins.int =================================================================== --- branches/Cog/build.linux32x86/glue.cog.spur/plugins.int (rev 0) +++ branches/Cog/build.linux32x86/glue.cog.spur/plugins.int 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,27 @@ +# Copied, perhaps edited, from ../../../nscogsrc/examplePlugins.int +INTERNAL_PLUGINS = \ +AioPlugin \ +AsynchFilePlugin \ +BMPReadWriterPlugin \ +B2DPlugin \ +BitBltPlugin \ +DSAPrims \ +DropPlugin \ +FileCopyPlugin \ +FilePlugin \ +FloatArrayPlugin \ +FloatMathPlugin \ +ZipPlugin \ +JPEGReadWriter2Plugin \ +JPEGReaderPlugin \ +LargeIntegers \ +Matrix2x3Plugin \ +MiscPrimitivePlugin \ +IA32ABI \ +RePlugin \ +SecurityPlugin \ +SocketPlugin \ +SurfacePlugin \ +UUIDPlugin \ +UnixOSProcessPlugin \ +VMProfileLinuxSupportPlugin
Modified: branches/Cog/build.macos32x86/glue.cog.spur/CoreVM.xcodeproj/project.pbxproj =================================================================== --- branches/Cog/build.macos32x86/newspeak.cog.spur/CoreVM.xcodeproj/project.pbxproj 2015-08-11 19:42:12 UTC (rev 3420) +++ branches/Cog/build.macos32x86/glue.cog.spur/CoreVM.xcodeproj/project.pbxproj 2015-08-19 23:57:42 UTC (rev 3425) @@ -759,7 +759,7 @@ 737D7E2513BAB68900347756 /* cogmethod.h */, ); name = vm; - path = ../../nsspursrc/vm; + path = ../../nsnacspursrc/vm; sourceTree = "<group>"; }; F5F8AE0802EB4E090100013C /* Mac OS */ = {
Modified: branches/Cog/build.macos32x86/glue.cog.spur/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj =================================================================== --- branches/Cog/build.macos32x86/newspeak.cog.spur/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj 2015-08-11 19:42:12 UTC (rev 3420) +++ branches/Cog/build.macos32x86/glue.cog.spur/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj 2015-08-19 23:57:42 UTC (rev 3425) @@ -27,7 +27,7 @@ 73D8A6411701272700C66275 /* sqMacSSL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sqMacSSL.c; path = "../../../platforms/Mac OS/plugins/SqueakSSL/sqMacSSL.c"; sourceTree = SOURCE_ROOT; }; 8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; 8D01CCD20486CAD60068D4B7 /* SqueakSSL.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SqueakSSL.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - DA3A20F50AA63CBF0050B983 /* interp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = interp.h; path = ../../../nsspursrc/vm/interp.h; sourceTree = SOURCE_ROOT; }; + DA3A20F50AA63CBF0050B983 /* interp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = interp.h; path = ../../../nsnacspursrc/vm/interp.h; sourceTree = SOURCE_ROOT; }; DA3A20F60AA63CDC0050B983 /* sqMemoryAccess.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqMemoryAccess.h; path = ../../../platforms/Cross/vm/sqMemoryAccess.h; sourceTree = SOURCE_ROOT; }; DA3A20F70AA63CDC0050B983 /* sqVirtualMachine.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqVirtualMachine.h; path = ../../../platforms/Cross/vm/sqVirtualMachine.h; sourceTree = SOURCE_ROOT; }; DA3A20F80AA63D000050B983 /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = config.h; path = "../../../platforms/Mac OS/vm/config.h"; sourceTree = SOURCE_ROOT; };
Modified: branches/Cog/build.macos32x86/glue.cog.spur/UnixOSProcessPlugin/UnixOSProcessPlugin.xcodeproj/project.pbxproj =================================================================== --- branches/Cog/build.macos32x86/newspeak.cog.spur/UnixOSProcessPlugin/UnixOSProcessPlugin.xcodeproj/project.pbxproj 2015-08-11 19:42:12 UTC (rev 3420) +++ branches/Cog/build.macos32x86/glue.cog.spur/UnixOSProcessPlugin/UnixOSProcessPlugin.xcodeproj/project.pbxproj 2015-08-19 23:57:42 UTC (rev 3425) @@ -16,7 +16,7 @@ 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; }; 7308DE360B9614A4003B7CCD /* UnixOSProcessPlugin.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = UnixOSProcessPlugin.c; path = ../../../nsspursrc/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c; sourceTree = "<group>"; }; 73662FE60F53864E00C64E7F /* sqMemoryAccess.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqMemoryAccess.h; path = Cross/vm/sqMemoryAccess.h; sourceTree = "<group>"; }; - 73662FE70F53864E00C64E7F /* interp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = interp.h; path = ../../../nsspursrc/vm/interp.h; sourceTree = SOURCE_ROOT; }; + 73662FE70F53864E00C64E7F /* interp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = interp.h; path = ../../../nsnacspursrc/vm/interp.h; sourceTree = SOURCE_ROOT; }; 73662FE80F53864E00C64E7F /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = config.h; path = "Mac OS/vm/config.h"; sourceTree = "<group>"; }; 73662FE90F53864E00C64E7F /* sqConfig.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqConfig.h; path = "Mac OS/vm/sqConfig.h"; sourceTree = "<group>"; }; 73662FEA0F53864E00C64E7F /* sqPlatformSpecific.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqPlatformSpecific.h; path = "Mac OS/vm/sqPlatformSpecific.h"; sourceTree = "<group>"; };
Modified: branches/Cog/build.macos32x86/glue.stack.spur/CoreVM.xcodeproj/project.pbxproj =================================================================== --- branches/Cog/build.macos32x86/newspeak.stack.spur/CoreVM.xcodeproj/project.pbxproj 2015-08-11 19:42:12 UTC (rev 3420) +++ branches/Cog/build.macos32x86/glue.stack.spur/CoreVM.xcodeproj/project.pbxproj 2015-08-19 23:57:42 UTC (rev 3425) @@ -745,7 +745,7 @@ 737D7E2413BAB68900347756 /* vmCallback.h */, ); name = vm; - path = ../../nsspurstacksrc/vm; + path = ../../nsnacspurstacksrc/vm; sourceTree = "<group>"; }; F5F8AE0802EB4E090100013C /* Mac OS */ = {
Modified: branches/Cog/build.macos32x86/glue.stack.spur/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj =================================================================== --- branches/Cog/build.macos32x86/newspeak.stack.spur/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj 2015-08-11 19:42:12 UTC (rev 3420) +++ branches/Cog/build.macos32x86/glue.stack.spur/SqueakSSL/SqueakSSL.xcodeproj/project.pbxproj 2015-08-19 23:57:42 UTC (rev 3425) @@ -27,7 +27,7 @@ 73D8A6411701272700C66275 /* sqMacSSL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sqMacSSL.c; path = "../../../platforms/Mac OS/plugins/SqueakSSL/sqMacSSL.c"; sourceTree = SOURCE_ROOT; }; 8D01CCD10486CAD60068D4B7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; }; 8D01CCD20486CAD60068D4B7 /* SqueakSSL.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SqueakSSL.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - DA3A20F50AA63CBF0050B983 /* interp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = interp.h; path = ../../../nsspurstacksrc/vm/interp.h; sourceTree = SOURCE_ROOT; }; + DA3A20F50AA63CBF0050B983 /* interp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = interp.h; path = ../../../nsnacspurstacksrc/vm/interp.h; sourceTree = SOURCE_ROOT; }; DA3A20F60AA63CDC0050B983 /* sqMemoryAccess.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqMemoryAccess.h; path = ../../../platforms/Cross/vm/sqMemoryAccess.h; sourceTree = SOURCE_ROOT; }; DA3A20F70AA63CDC0050B983 /* sqVirtualMachine.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqVirtualMachine.h; path = ../../../platforms/Cross/vm/sqVirtualMachine.h; sourceTree = SOURCE_ROOT; }; DA3A20F80AA63D000050B983 /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = config.h; path = "../../../platforms/Mac OS/vm/config.h"; sourceTree = SOURCE_ROOT; };
Modified: branches/Cog/build.macos32x86/glue.stack.spur/UnixOSProcessPlugin/UnixOSProcessPlugin.xcodeproj/project.pbxproj =================================================================== --- branches/Cog/build.macos32x86/newspeak.stack.spur/UnixOSProcessPlugin/UnixOSProcessPlugin.xcodeproj/project.pbxproj 2015-08-11 19:42:12 UTC (rev 3420) +++ branches/Cog/build.macos32x86/glue.stack.spur/UnixOSProcessPlugin/UnixOSProcessPlugin.xcodeproj/project.pbxproj 2015-08-19 23:57:42 UTC (rev 3425) @@ -16,7 +16,7 @@ 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; }; 7308DE360B9614A4003B7CCD /* UnixOSProcessPlugin.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = UnixOSProcessPlugin.c; path = ../../../nsspursrc/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c; sourceTree = "<group>"; }; 73662FE60F53864E00C64E7F /* sqMemoryAccess.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqMemoryAccess.h; path = Cross/vm/sqMemoryAccess.h; sourceTree = "<group>"; }; - 73662FE70F53864E00C64E7F /* interp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = interp.h; path = ../../../nsspurstacksrc/vm/interp.h; sourceTree = SOURCE_ROOT; }; + 73662FE70F53864E00C64E7F /* interp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = interp.h; path = ../../../nsnacspurstacksrc/vm/interp.h; sourceTree = SOURCE_ROOT; }; 73662FE80F53864E00C64E7F /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = config.h; path = "Mac OS/vm/config.h"; sourceTree = "<group>"; }; 73662FE90F53864E00C64E7F /* sqConfig.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqConfig.h; path = "Mac OS/vm/sqConfig.h"; sourceTree = "<group>"; }; 73662FEA0F53864E00C64E7F /* sqPlatformSpecific.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sqPlatformSpecific.h; path = "Mac OS/vm/sqPlatformSpecific.h"; sourceTree = "<group>"; };
Added: branches/Cog/nsnacspursrc/examplePlugins.ext =================================================================== --- branches/Cog/nsnacspursrc/examplePlugins.ext (rev 0) +++ branches/Cog/nsnacspursrc/examplePlugins.ext 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,4 @@ +# This is an example external plugin list. +# Edit plugins.ext in vm build dir to specify the external plugins to be built. +EXTERNAL_PLUGINS = \ +SqueakSSL
Added: branches/Cog/nsnacspursrc/examplePlugins.int =================================================================== --- branches/Cog/nsnacspursrc/examplePlugins.int (rev 0) +++ branches/Cog/nsnacspursrc/examplePlugins.int 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,28 @@ +# This is an example internal plugin list. +# Edit plugins.int in vm build dir to specify internal plugins to be built and +# linked into the vm. +INTERNAL_PLUGINS = \ +AsynchFilePlugin \ +BMPReadWriterPlugin \ +B2DPlugin \ +BitBltPlugin \ +DSAPrims \ +DropPlugin \ +FileCopyPlugin \ +FilePlugin \ +FloatArrayPlugin \ +FloatMathPlugin \ +ZipPlugin \ +JPEGReadWriter2Plugin \ +JPEGReaderPlugin \ +LargeIntegers \ +Matrix2x3Plugin \ +MiscPrimitivePlugin \ +IA32ABI \ +RePlugin \ +SecurityPlugin \ +SocketPlugin \ +SurfacePlugin \ +UUIDPlugin \ +UnixOSProcessPlugin \ +VMProfileMacSupportPlugin
Added: branches/Cog/nsnacspursrc/vm/cogit.c =================================================================== --- branches/Cog/nsnacspursrc/vm/cogit.c (rev 0) +++ branches/Cog/nsnacspursrc/vm/cogit.c 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,16 @@ +/* Automatically generated by + Cogit VMMaker.oscog-eem.1439 uuid: ce1fb6f7-90ee-48c4-9f60-6ff1731ec464 + */ + +#if defined(__ARM_ARCH__) || defined(__arm__) || defined(__arm32__) || defined(ARM32) + +# include "cogitARMv5.c" + +#elif defined(_M_I386) || defined(_X86_) || defined(i386) || defined(i486) || defined(i586) || defined(i686) || defined(__i386__) || defined(__386__) || defined(X86) || defined(I386) + +# include "cogitIA32.c" + +#else +# error As yet no Cogit implementation appears to exist for your platform. +# error Consider implementing it, starting by adding a subclass of CogAbstractInstruction. +#endif
Added: branches/Cog/nsnacspursrc/vm/cogit.h =================================================================== --- branches/Cog/nsnacspursrc/vm/cogit.h (rev 0) +++ branches/Cog/nsnacspursrc/vm/cogit.h 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,153 @@ +/* Automatically generated by + CCodeGenerator VMMaker.oscog-eem.1439 uuid: ce1fb6f7-90ee-48c4-9f60-6ff1731ec464 + */ + + +/*** Function Prototypes ***/ + + +#if !PRODUCTION && defined(PlatformNoDbgRegParms) +# define NoDbgRegParms PlatformNoDbgRegParms +#endif + +#if !defined(NoDbgRegParms) +# define NoDbgRegParms /*empty*/ +#endif + + + +#if !defined(NeverInline) +# define NeverInline /*empty*/ +#endif + +extern sqInt abortOffset(void); +extern void addCogMethodsToHeapMap(void); +extern sqInt bytecodePCForstartBcpcin(sqInt mcpc, sqInt startbcpc, CogBlockMethod *cogMethod); +extern void callCogCodePopReceiver(void); +extern void callCogCodePopReceiverAndClassRegs(void); +extern sqInt ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver); +extern sqInt ceSICMiss(sqInt receiver); +extern void checkAssertsEnabledInCogit(void); +extern sqInt checkIntegrityOfObjectReferencesInCode(sqInt gcModes); +extern char * codeEntryFor(char *address); +extern char * codeEntryNameFor(char *address); +extern sqInt cogCodeBase(void); +extern sqInt cogCodeConstituents(void); +extern void cogitPostGCAction(sqInt gcMode); +extern sqInt cogMethodDoesntLookKosher(CogMethod *cogMethod); +extern CogMethod * cogMNUPICSelectorreceivermethodOperandnumArgs(sqInt selector, sqInt rcvr, sqInt methodOperand, sqInt numArgs); +extern CogMethod * cogselector(sqInt aMethodObj, sqInt aSelectorOop); +extern void compactCogCompiledCode(void); +extern sqInt defaultCogCodeSize(void); +extern void enterCogCodePopReceiver(void); +extern CogBlockMethod * findMethodForStartBcpcinHomeMethod(sqInt startbcpc, CogMethod *cogMethod); +extern void followForwardedLiteralsIn(CogMethod *cogMethod); +extern void followForwardedMethods(void); +extern void freeUnmarkedMachineCode(void); +extern void initializeCodeZoneFromupTo(sqInt startAddress, sqInt endAddress); +extern sqInt isPCWithinMethodZone(void *address); +extern sqInt isSendReturnPC(sqInt retpc); +extern void linkNSSendCacheclassTagenclosingObjecttargetcaller(NSSendCache *nsSendCache, sqInt classTag, sqInt enclosingObject, CogMethod *targetMethod, CogMethod *callingMethod); +extern void linkSendAtintooffsetreceiver(sqInt callSiteReturnAddress, CogMethod *sendingMethod, CogMethod *targetMethod, sqInt theEntryOffset, sqInt receiver); +extern void mapObjectReferencesInMachineCode(sqInt gcMode); +extern void markAndTraceMachineCodeOfMarkedMethods(void); +extern void markMethodAndReferents(CogBlockMethod *aCogMethod); +extern usqInt maxCogMethodAddress(void); +extern usqInt mcPCForBackwardBranchstartBcpcin(sqInt bcpc, sqInt startbcpc, CogBlockMethod *cogMethod); +extern sqInt minCogMethodAddress(void); +extern sqInt mnuOffset(void); +extern sqInt patchToOpenPICFornumArgsreceiver(sqInt selector, sqInt numArgs, sqInt receiver); +extern void printCogMethodFor(void *address); +extern void printTrampolineTable(void); +extern sqInt recordPrimTraceFunc(void); +extern void setBreakMethod(sqInt anObj); +extern void setPostCompileHook(void (*aFunction)(CogMethod *)); +extern void setSelectorOfto(CogMethod *cogMethod, sqInt aSelectorOop); +extern sqInt traceLinkedSendOffset(void); +extern void unlinkAllSends(void); +extern void unlinkSendsLinkedForInvalidClasses(void); +extern void unlinkSendsOfisMNUSelector(sqInt selector, sqInt isMNUSelector); +extern void unlinkSendsToFree(void); +extern void unlinkSendsToandFreeIf(sqInt targetMethodObject, sqInt freeIfTrue); +extern void addAllToYoungReferrers(void); +extern void freeMethod(CogMethod *cogMethod); +extern CogMethod * methodFor(void *address); +extern sqInt numMethodsOfType(sqInt cogMethodType); +extern void printCogMethods(void); +extern void printCogMethodsOfType(sqInt cmType); +extern void printCogMethodsWithMethod(sqInt methodOop); +extern void printCogMethodsWithPrimitive(sqInt primIdx); +extern void printCogMethodsWithSelector(sqInt selectorOop); +extern void printCogYoungReferrers(void); +extern void printOpenPICList(void); +extern char * whereIsMaybeCodeThing(sqInt anOop); +extern sqInt numRegArgs(void); +extern sqInt genQuickReturnConst(void); +extern sqInt genQuickReturnInstVar(void); +extern sqInt genQuickReturnSelf(void); +extern void recordCallOffsetIn(CogMethod *cogMethod); +extern void rewritePrimInvocationInto(CogMethod *cogMethod, void (*primFunctionPointer)(void)); +extern void voidCogCompiledCode(void); +extern void callCogCodePopReceiverArg0Regs(void); +extern void callCogCodePopReceiverArg1Arg0Regs(void); + + +/*** Global Variables ***/ +VM_EXPORT sqInt blockNoContextSwitchOffset; +VM_EXPORT sqInt breakPC; +VM_EXPORT void * CFramePointer; +VM_EXPORT void * CStackPointer; +VM_EXPORT sqInt ceBaseFrameReturnTrampoline; +VM_EXPORT void (*ceCall0ArgsPIC)(void); +VM_EXPORT void (*ceCall1ArgsPIC)(void); +VM_EXPORT void (*ceCall2ArgsPIC)(void); +VM_EXPORT void (*ceCallCogCodePopReceiverAndClassRegs)(void); +VM_EXPORT void (*ceCallCogCodePopReceiverArg0Regs)(void); +VM_EXPORT void (*ceCallCogCodePopReceiverArg1Arg0Regs)(void); +VM_EXPORT void (*ceCallCogCodePopReceiverReg)(void); +VM_EXPORT sqInt ceCannotResumeTrampoline; +VM_EXPORT void (*ceCaptureCStackPointers)(void); +VM_EXPORT sqInt ceCheckForInterruptTrampoline; +VM_EXPORT void (*ceEnterCogCodePopReceiverReg)(void); +VM_EXPORT unsigned long (*ceGetSP)(void); +VM_EXPORT sqInt ceReturnToInterpreterTrampoline; +VM_EXPORT unsigned long (*ceTryLockVMOwner)(void); +VM_EXPORT void (*ceUnlockVMOwner)(void); +VM_EXPORT sqInt cFramePointerInUse; +VM_EXPORT sqInt cmEntryOffset; +VM_EXPORT sqInt cmNoCheckEntryOffset; +VM_EXPORT unsigned long debugPrimCallStackOffset; +VM_EXPORT sqInt missOffset; +VM_EXPORT void (*realCECallCogCodePopReceiverAndClassRegs)(void); +VM_EXPORT void (*realCECallCogCodePopReceiverArg0Regs)(void); +VM_EXPORT void (*realCECallCogCodePopReceiverArg1Arg0Regs)(void); +VM_EXPORT void (*realCECallCogCodePopReceiverReg)(void); +VM_EXPORT void (*realCEEnterCogCodePopReceiverReg)(void); +VM_EXPORT int traceFlags ; +VM_EXPORT sqInt traceStores; + + +/*** Macros ***/ +#define blockAlignment(self) 8 +#define breakOnImplicitReceiver() (traceFlags & 64) +#define ceBaseFrameReturnPC() ceBaseFrameReturnTrampoline +#define ceCannotResumePC() ((usqInt)ceCannotResumeTrampoline) +#define ceReturnToInterpreterPC() ((usqInt)ceReturnToInterpreterTrampoline) +#define compileSendTrace() (traceFlags & 2) +#define entryOffset() cmEntryOffset +#define getCFramePointer() CFramePointer +#define getCStackPointer() CStackPointer +#define interpretOffset() missOffset +#define noCheckEntryOffset() cmNoCheckEntryOffset +#define noContextSwitchBlockEntryOffset() blockNoContextSwitchOffset +#define printOnTrace() (traceFlags & 1) +#define recordBlockTrace() (traceFlags & 4) +#define recordEventTrace() (traceFlags & 16) +#define recordOverflowTrace() (traceFlags & 32) +#define recordPrimTrace() (traceFlags & 8) +#define recordSendTrace() (traceFlags & 2) +#define setCFramePointer(theFP) (CFramePointer = (void *)(theFP)) +#define setCStackPointer(theSP) (CStackPointer = (void *)(theSP)) +#define tryLockVMOwner() (ceTryLockVMOwner() != 0) +#define unlockVMOwner() ceUnlockVMOwner() +
Added: branches/Cog/nsnacspursrc/vm/cogitARMv5.c =================================================================== --- branches/Cog/nsnacspursrc/vm/cogitARMv5.c (rev 0) +++ branches/Cog/nsnacspursrc/vm/cogitARMv5.c 2015-08-19 23:57:42 UTC (rev 3425) @@ -0,0 +1,28688 @@ +/* Automatically generated by + CCodeGenerator VMMaker.oscog-eem.1439 uuid: ce1fb6f7-90ee-48c4-9f60-6ff1731ec464 + from + StackToRegisterMappingCogit VMMaker.oscog-eem.1439 uuid: ce1fb6f7-90ee-48c4-9f60-6ff1731ec464 + */ +static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1439 uuid: ce1fb6f7-90ee-48c4-9f60-6ff1731ec464 " __DATE__ ; +char *__cogitBuildInfo = __buildInfo; + + + +#include <stddef.h> +#include "sq.h" +#include "sqCogStackAlignment.h" +#include "dispdbg.h" +#include "cogmethod.h" +#include "nssendcache.h" +#if COGMTVM +#include "cointerpmt.h" +#else +#include "cointerp.h" +#endif +#include "cogit.h" + +typedef struct _AbstractInstruction { + unsigned char opcode; + unsigned char machineCodeSize; + unsigned char maxSize; + unsigned char annotation; + unsigned char conditionOrNil; + unsigned long operands [3]; + unsigned long address; + struct _AbstractInstruction *dependent; + unsigned long machineCode [5]; + } AbstractInstruction; + +#define CogOutOfLineLiteralsARMCompiler AbstractInstruction +#define CogARMCompiler AbstractInstruction +#define CogAbstractInstruction AbstractInstruction + + +typedef struct { + AbstractInstruction *fakeHeader; + AbstractInstruction *fillInstruction; + sqInt numArgs; + sqInt numCopied; + sqInt numInitialNils; + sqInt startpc; + AbstractInstruction *entryLabel; + AbstractInstruction *stackCheckLabel; + sqInt span; + sqInt hasInstVarRef; + } BlockStart; + +#define CogBlockStart BlockStart + + +typedef struct _BytecodeDescriptor { + sqInt (*generator )(void); + sqInt (*spanFunction )(struct _BytecodeDescriptor *,sqInt,sqInt,sqInt); + sqInt (*needsFrameFunction )(sqInt); + signed char stackDelta; + unsigned char opcode; + unsigned char numBytes; + unsigned isBranchTrue : 1; + unsigned isBranchFalse : 1; + unsigned isReturn : 1; + unsigned isBlockCreation : 1; + unsigned isMapped : 1; + unsigned isMappedInBlock : 1; + unsigned isExtension : 1; + unsigned isInstVarRef : 1; + unsigned hasIRC : 1; + } BytecodeDescriptor; + +#define CogBytecodeDescriptor BytecodeDescriptor + + +typedef struct { + sqInt (*primitiveGenerator )(void); + sqInt primNumArgs; + sqInt (*enabled )(sqInt); + } PrimitiveDescriptor; + +#define CogPrimitiveDescriptor PrimitiveDescriptor + + +typedef struct { + AbstractInstruction *targetInstruction; + sqInt instructionIndex; + sqInt simStackPtr; + } BytecodeFixup; + +#define CogSSBytecodeFixup BytecodeFixup +#define CogBytecodeFixup BytecodeFixup + + +typedef struct { + char type; + char spilled; + char annotateUse; + sqInt registerr; + sqInt offset; + sqInt constant; + sqInt bcptr; + } CogSimStackEntry; + + +typedef struct { + sqInt isReceiverResultRegLive; + CogSimStackEntry *ssEntry; + } CogSSOptStatus; + + + +/*** Constants ***/ +#define AddCqR 96 +#define AddCwR 104 +#define AddOpcode 4 +#define AddRdRd 112 +#define AddRR 89 +#define AL 14 +#define AlignmentNops 3 +#define AltBlockCreationBytecodeSize 3 +#define AltFirstSpecialSelector 80 +#define AndCqR 98 +#define AndCqRR 110 +#define AndCwR 106 +#define AndOpcode 0 +#define AndRR 91 +#define AnnotationShift 5 +#define Arg0Reg -7 +#define Arg1Reg -8 +#define ArithmeticShiftRightCqR 82 +#define ArithmeticShiftRightRR 83 +#define BadRegisterSet 1 +#define BicOpcode 14 +#define BlockCreationBytecodeSize 4 +#define BytecodeSetHasDirectedSuperSend 0 +#define CArg0Reg 0 +#define CArg1Reg 1 +#define CArg2Reg 2 +#define CArg3Reg 3 +#define Call 10 +#define CallFull 11 +#define CC 3 +#define ClassArrayCompactIndex 51 +#define ClassBlockClosureCompactIndex 37 +#define ClassFloatCompactIndex 34 +#define ClassMethodContextCompactIndex 36 +#define ClassReg -5 +#define ClosureFirstCopiedValueIndex 3 +#define ClosureIndex 4 +#define ClosureNumArgsIndex 2 +#define ClosureOuterContextIndex 0 +#define ClosureStartPCIndex 1 +#define CMBlock 3 +#define CMClosedPIC 4 +#define CMFree 1 +#define CMMaxUsageCount 7 +#define CMMethod 2 +#define CMOpenPIC 5 +#define CMPSMULL 123 +#define CmpCqR 95 +#define CmpCwR 103 +#define CmpNotOpcode 11 +#define CmpOpcode 10 +#define CmpRdRd 111 +#define CmpRR 88 +#define ConcreteIPReg 12 +#define ConcreteVarBaseReg 10 +#define ConstZero 1 +#define ConvertRRd 117 +#define CS 2 +#define D0 0 +#define D1 1 +#define D2 2 +#define D3 3 +#define D4 4 +#define D5 5 +#define D6 6 +#define D7 7 +#define Debug DEBUGVM +#define DisplacementMask 0x1F +#define DisplacementX2N 0 +#define DivRdRd 115 +#define DPFPReg0 -9 +#define DPFPReg1 -10 +#define DPFPReg2 -11 +#define DPFPReg3 -12 +#define DPFPReg4 -13 +#define DPFPReg5 -14 +#define DPFPReg6 -15 +#define DPFPReg7 -16 +#define EncounteredUnknownBytecode -6 +#define EQ 0 +#define Fill16 6 +#define Fill32 7 +#define FillFromWord 8 +#define FirstAnnotation 64 +#define FirstJump 15 +#define FirstShortJump 19 +#define FirstSpecialSelector 176 +#define FoxCallerSavedIP 4 +#define FoxMethod -4 +#define FoxMFReceiver -12 +#define FoxSavedFP 0 +#define FoxThisContext -8 +#define FPReg -1 +#define GCModeBecome 8 +#define GCModeFull 1 +#define GCModeNewSpace 2 +#define GE 10 +#define GPRegMax -3 +#define GPRegMin -8 +#define GT 12 +#define HasBytecodePC 4 +#define HeaderIndex 0 +#define HI 8 +#define InstanceSpecificationIndex 2 +#define InstructionPointerIndex 1 +#define InsufficientCodeSpace -2 +#define IsAbsPCReference 3 +#define IsAnnotationExtension 1 +#define IsDirectedSuperSend 9 +#define IsDisplacementX2N 0 +#define IsNSDynamicSuperSend 11 +#define IsNSSelfSend 10 +#define IsNSSendCall 6 +#define IsObjectReference 2 +#define IsRelativeCall 5 +#define IsSendCall 7 +#define IsSuperSend 8 +#define Jump 19 +#define JumpAbove 34 +#define JumpAboveOrEqual 33 +#define JumpBelow 32 +#define JumpBelowOrEqual 35 +#define JumpCarry 26 +#define JumpFPEqual 36 +#define JumpFPGreater 40 +#define JumpFPGreaterOrEqual 41 +#define JumpFPLess 38 +#define JumpFPLessOrEqual 39 +#define JumpFPNotEqual 37 +#define JumpFPOrdered 42 +#define JumpFPUnordered 43 +#define JumpFull 15 +#define JumpGreater 30 +#define JumpGreaterOrEqual 29 +#define JumpLess 28 +#define JumpLessOrEqual 31 +#define JumpLong 16 +#define JumpLongNonZero 18 +#define JumpLongZero 17 +#define JumpNegative 22 +#define JumpNoCarry 27 +#define JumpNonNegative 23 +#define JumpNonZero 21 +#define JumpNoOverflow 25 +#define JumpOverflow 24 +#define JumpR 13 +#define JumpZero 20 +#define Label 1 +#define LargeContextSlots 62 +#define LastJump 43 +#define LE 13 +#define LinkReg -17 +#define Literal 2 +#define LoadEffectiveAddressMwrR 79 +#define LogicalShiftLeftCqR 86 +#define LogicalShiftLeftRR 87 +#define LogicalShiftRightCqR 84 +#define LogicalShiftRightRR 85 +#define LookupRuleDynamicSuper 0x101 +#define LookupRuleImplicit 0x100 +#define LookupRuleSelf 0 +#define LR 14 +#define LS 9 +#define LT 11 +#define MapEnd 0 +#define MaxCompiledPrimitiveIndex 222 +#define MaxMethodSize 65535 +#define MaxNegativeErrorCode -8 +#define MaxNumArgs 15 +#define MaxStackAllocSize 1572864 +#define MaxStackCheckOffset 0xFFF +#define MaxX2NDisplacement 992 +#define MethodCacheClass 2 +#define MethodCacheMask 0x7FC +#define MethodCacheMethod 3 +#define MethodCacheSelector 1 +#define MethodIndex 3 +#define MethodTooBig -4 +#define MFMethodFlagHasContextFlag 1 +#define MFMethodFlagIsBlockFlag 2 +#define MI 4 +#define MoveAwR 45 +#define MoveCqR 67 +#define MoveCwR 68 +#define MoveM16rR 55 +#define MoveM64rRd 72 +#define MoveMbrR 63 +#define MoveMwrR 49 +#define MoveNotOpcode 15 +#define MoveOpcode 13 +#define MoveRAw 46 +#define MoveRdM64r 73 +#define MoveRdRd 71 +#define MoveRMbr 64 +#define MoveRMwr 50 +#define MoveRR 44 +#define MoveRXbrR 66 +#define MoveRXwrR 52 +#define MoveXbrRR 65 +#define MoveXwrRR 51 +#define MSR 119 +#define MULTIPLEBYTECODESETS 1 +#define MulRdRd 114 +#define NE 1 +#define NegateR 81 +#define NewspeakVM 1 +#define Nop 9 +#define NotFullyInitialized -1 +#define NSCClassTagIndex 0 +#define NSCEnclosingObjectIndex 1 +#define NSCNumArgsIndex 4 +#define NSCTargetIndex 2 +#define NumObjRefsInRuntime 0 +#define NumOopsPerNSC 6 +#define NumSendTrampolines 4 +#define NumTrampolines 72 +#define OrCqR 99 +#define OrCwR 107 +#define OrOpcode 12 +#define OrRR 92 +#define PC 15 +#define PCReg -19 +#define PL 5 +#define PopR 74 +#define PrefetchAw 78 +#define PrimCallCollectsProfileSamples 8 +#define PrimCallDoNotJIT 32 +#define PrimCallMayCallBack 4 +#define PrimCallNeedsNewMethod 1 +#define PrimCallNeedsPrimitiveFunction 2 +#define PrimErrWritePastObject 17 +#define PushCq 76 +#define PushCw 77 +#define PushR 75 +#define R0 0 +#define R11 11 +#define R4 4 +#define R5 5 +#define R6 6 +#define R7 7 +#define R8 8 +#define ReceiverIndex 5 +#define ReceiverResultReg -3 +#define RetN 12 +#define RISCTempReg -18 +#define RsbOpcode 3 +#define SelectorCannotInterpret 34 +#define SelectorDoesNotUnderstand 20 +#define SenderIndex 0 +#define SendNumArgsReg -6 +#define ShouldNotJIT -8 +#define SistaVM 0 +#define SMULL 118 +#define SmallContextSlots 22 +#define SP 13 +#define SPReg -2 +#define SqrtRd 116 +#define SSBaseOffset 1 +#define SSConstant 2 +#define SSRegister 3 +#define SSSpill 4 +#define StackPointerIndex 2 +#define Stop 14 +#define SubCqR 97 +#define SubCwR 105 +#define SubOpcode 2 +#define SubRdRd 113 +#define SubRR 90 +#define TempReg -4 +#define TstCqR 100 +#define TstOpcode 8 +#define UnfailingPrimitive 3 +#define UnimplementedPrimitive -7 +#define ValueIndex 1 +#define VarBaseReg -20 +#define VC 7 +#define VS 6 +#define XorCqR 101 +#define XorCwR 108 +#define XorOpcode 1 +#define XorRR 93 +#define YoungSelectorInPIC -5 + + +/*** Function Prototypes ***/ + + +#if !PRODUCTION && defined(PlatformNoDbgRegParms) +# define NoDbgRegParms PlatformNoDbgRegParms +#endif + +#if !defined(NoDbgRegParms) +# define NoDbgRegParms /*empty*/ +#endif + + + +#if !defined(NeverInline) +# define NeverInline /*empty*/ +#endif + +static AbstractInstruction * addDependent(AbstractInstruction * self_in_addDependent, AbstractInstruction *anInstruction) NoDbgRegParms; +static sqInt availableRegisterOrNilFor(AbstractInstruction * self_in_availableRegisterOrNilFor, sqInt liveRegsMask) NoDbgRegParms; +static AbstractInstruction * cloneLiteralFrom(AbstractInstruction * self_in_cloneLiteralFrom, AbstractInstruction *existingLiteral) NoDbgRegParms; +static AbstractInstruction * generateICacheFlush(AbstractInstruction * self_in_generateICacheFlush) NoDbgRegParms; +static AbstractInstruction * genWriteCResultIntoReg(AbstractInstruction * self_in_genWriteCResultIntoReg, sqInt abstractRegister) NoDbgRegParms; +static AbstractInstruction * getJmpTarget(AbstractInstruction * self_in_getJmpTarget) NoDbgRegParms; +static AbstractInstruction * initializeSharableLiteral(AbstractInstruction * self_in_initializeSharableLiteral, sqInt literal) NoDbgRegParms; +static AbstractInstruction * initializeUniqueLiteral(AbstractInstruction * self_in_initializeUniqueLiteral, sqInt literal) NoDbgRegParms; +static sqInt isAFixup(AbstractInstruction * self_in_isAFixup, void *fixupOrAddress) NoDbgRegParms; +static sqInt isAnInstruction(AbstractInstruction * self_in_isAnInstruction, AbstractInstruction *addressOrInstruction) NoDbgRegParms; +static sqInt isJump(AbstractInstruction * self_in_isJump) NoDbgRegParms; +static sqInt isLongJump(AbstractInstruction * self_in_isLongJump) NoDbgRegParms; +static AbstractInstruction * jmpTarget(AbstractInstruction * self_in_jmpTarget, AbstractInstruction *anAbstractInstruction) NoDbgRegParms; +static usqInt labelOffset(AbstractInstruction * self_in_labelOffset) NoDbgRegParms; +static sqInt numCheckFeaturesOpcodes(AbstractInstruction * self_in_numCheckFeaturesOpcodes) NoDbgRegParms; +static AbstractInstruction * relocateJumpLongBeforeFollowingAddressby(AbstractInstruction * self_in_relocateJumpLongBeforeFollowingAddressby, sqInt pc, sqInt delta) NoDbgRegParms; +static AbstractInstruction * resolveJumpTarget(AbstractInstruction * self_in_resolveJumpTarget) NoDbgRegParms; +static sqInt setLabelOffset(AbstractInstruction * self_in_setLabelOffset, sqInt aValue) NoDbgRegParms; +static sqInt abstractRegisterForConcreteRegister(AbstractInstruction * self_in_abstractRegisterForConcreteRegister, sqInt reg) NoDbgRegParms; +static sqInt addsrnimmror(AbstractInstruction * self_in_addsrnimmror, sqInt destReg, sqInt srcReg, sqInt immediate, sqInt rot) NoDbgRegParms; +static sqInt addrnimmror(AbstractInstruction * self_in_addrnimmror, sqInt destReg, sqInt srcReg, sqInt immediate, sqInt rot) NoDbgRegParms; +static sqInt addrnrm(AbstractInstruction * self_in_addrnrm, sqInt destReg, sqInt srcReg, sqInt addReg) NoDbgRegParms; +static usqInt aeabiDivModFunctionAddr(AbstractInstruction * self_in_aeabiDivModFunctionAddr) NoDbgRegParms; +static sqInt andsrnimmror(AbstractInstruction * self_in_andsrnimmror, sqInt destReg, sqInt srcReg, sqInt immediate, sqInt rot) NoDbgRegParms; +static sqInt andrnimmror(AbstractInstruction * self_in_andrnimmror, sqInt destReg, sqInt srcReg, sqInt immediate, sqInt rot) NoDbgRegParms; +static sqInt bicsrnimmror(AbstractInstruction * self_in_bicsrnimmror, sqInt destReg, sqInt srcReg, sqInt immediate, sqInt rot) NoDbgRegParms; +static sqInt bl(AbstractInstruction * self_in_bl, sqInt offset) NoDbgRegParms; +static sqInt b(AbstractInstruction * self_in_b, sqInt offset) NoDbgRegParms; +static sqInt callerSavedRegisterMask(AbstractInstruction * self_in_callerSavedRegisterMask) NoDbgRegParms; +static sqInt callInstructionByteSize(AbstractInstruction * self_in_callInstructionByteSize) NoDbgRegParms; +static sqInt callTargetFromReturnAddress(AbstractInstruction * self_in_callTargetFromReturnAddress, sqInt callSiteReturnAddress) NoDbgRegParms; +static sqInt computeMaximumSize(AbstractInstruction * self_in_computeMaximumSize) NoDbgRegParms; +static sqInt concreteCalleeSavedRegisterMask(AbstractInstruction * self_in_concreteCalleeSavedRegisterMask) NoDbgRegParms; +static sqInt concreteCallerSavedRegisterMask(AbstractInstruction * self_in_concreteCallerSavedRegisterMask) NoDbgRegParms; +static sqInt concreteDPFPRegister(AbstractInstruction * self_in_concreteDPFPRegister, sqInt registerIndex) NoDbgRegParms; +static sqInt concreteRegister(AbstractInstruction * self_in_concreteRegister, sqInt registerIndex) NoDbgRegParms; +static sqInt concretizeAt(AbstractInstruction * self_in_concretizeAt, sqInt actualAddress) NoDbgRegParms; +static usqInt concretizeCMPSMULL(AbstractInstruction * self_in_concretizeCMPSMULL) NoDbgRegParms; +static void concretizeConditionalInstruction(AbstractInstruction * self_in_concretizeConditionalInstruction) NoDbgRegParms; +static AbstractInstruction * concretizeFill16(AbstractInstruction * self_in_concretizeFill16) NoDbgRegParms; +static usqInt concretizeFill32(AbstractInstruction * self_in_concretizeFill32) NoDbgRegParms; +static AbstractInstruction * concretizeFillFromWord(AbstractInstruction * self_in_concretizeFillFromWord) NoDbgRegParms; +static usqInt concretizeMSR(AbstractInstruction * self_in_concretizeMSR) NoDbgRegParms; +static usqInt concretizeSMULL(AbstractInstruction * self_in_concretizeSMULL) NoDbgRegParms; +static sqInt cResultRegister(AbstractInstruction * self_in_cResultRegister) NoDbgRegParms; +static sqInt dataOpTyperdrnrmlsr(AbstractInstruction * self_in_dataOpTyperdrnrmlsr, sqInt armOpcode, sqInt destReg, sqInt srcReg, sqInt addReg, sqInt shft) NoDbgRegParms; +static void dispatchConcretize(AbstractInstruction * self_in_dispatchConcretize) NoDbgRegParms; +static sqInt fmsrFromto(AbstractInstruction * self_in_fmsrFromto, sqInt regA, sqInt regB) NoDbgRegParms; +static sqInt fsitodFromto(AbstractInstruction * self_in_fsitodFromto, sqInt regA, sqInt regB) NoDbgRegParms; +static sqInt fullCallsAreRelative(AbstractInstruction * self_in_fullCallsAreRelative) NoDbgRegParms; +static sqInt genAlignCStackSavingRegistersnumArgswordAlignment(AbstractInstruction * self_in_genAlignCStackSavingRegistersnumArgswordAlignment, sqInt saveRegs, sqInt numArgs, sqInt alignment) NoDbgRegParms; +static AbstractInstruction * genDivRRQuoRem(AbstractInstruction * self_in_genDivRRQuoRem, sqInt abstractRegDivisor, sqInt abstractRegDividend, sqInt abstractRegQuotient, sqInt abstractRegRemainder) NoDbgRegParms; +static AbstractInstruction * genGetLeafCallStackPointerFunction(AbstractInstruction * self_in_genGetLeafCallStackPointerFunction) NoDbgRegParms; +static sqInt genLoadCStackPointer(AbstractInstruction * self_in_genLoadCStackPointer) NoDbgRegParms; +static sqInt genLoadCStackPointers(AbstractInstruction * self_in_genLoadCStackPointers) NoDbgRegParms; +static sqInt genLoadStackPointers(AbstractInstruction * self_in_genLoadStackPointers) NoDbgRegParms; +static AbstractInstruction * genMulRR(AbstractInstruction * self_in_genMulRR, sqInt regSource, sqInt regDest) NoDbgRegParms; +static sqInt genPassConstasArgument(AbstractInstruction * self_in_genPassConstasArgument, sqInt constant, sqInt zeroRelativeArgIndex) NoDbgRegParms; +static sqInt genPassRegasArgument(AbstractInstruction * self_in_genPassRegasArgument, sqInt abstractRegister, sqInt zeroRelativeArgIndex) NoDbgRegParms;
@@ Diff output truncated at 50000 characters. @@
vm-dev@lists.squeakfoundation.org