[Vm-dev] [commit][3263] CogVM source as per VMMaker.oscog-eem.1080
commits at squeakvm.org
commits at squeakvm.org
Tue Feb 24 22:04:08 UTC 2015
Revision: 3263
Author: eliot
Date: 2015-02-24 14:04:06 -0800 (Tue, 24 Feb 2015)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1080
General:
Fix a type declaration error uncvered by the new inlining.
Simplify primitiveMakePoint. Include primitiveMethodXray
Include freeMethod: in Cogit's api for method xray.
Spur:
Fix a typing bug in initializeOldSpaceFirstFree:.
Newspeak:
Move the Newspeak plugins to nsspursrc/plugins.
Fix privacy violation checking for super sends.
Fix some type warnings in Spur stack VMs.
Slang:
More improvement to type inferrence/propagation. Support ifTrue:ifFalse:.
Better separate the passes in inferTypesForImplicitlyTypedVariablesAndMethods.
Fix slip in nodeToCast:to:. Provide types for atan, et al. Avoid casting nil.
Don't inline complex expressions that are bound to variables used in asserts.
Modified Paths:
--------------
branches/Cog/build.linux32x86/newspeak.cog.spur/build/mvm
branches/Cog/build.linux32x86/newspeak.cog.spur/build.assert/mvm
branches/Cog/build.linux32x86/newspeak.cog.spur/build.assert.itimerheartbeat/mvm
branches/Cog/build.linux32x86/newspeak.cog.spur/build.debug/mvm
branches/Cog/build.linux32x86/newspeak.cog.spur/build.debug.itimerheartbeat/mvm
branches/Cog/build.linux32x86/newspeak.cog.spur/build.itimerheartbeat/mvm
branches/Cog/build.linux32x86/newspeak.stack.spur/build/mvm
branches/Cog/build.linux32x86/newspeak.stack.spur/build.assert/mvm
branches/Cog/build.linux32x86/newspeak.stack.spur/build.debug/mvm
branches/Cog/build.linux64x64/newspeak.cog.spur/build/mvm
branches/Cog/build.linux64x64/newspeak.cog.spur/build.assert/mvm
branches/Cog/build.linux64x64/newspeak.cog.spur/build.assert.itimerheartbeat/mvm
branches/Cog/build.linux64x64/newspeak.cog.spur/build.debug/mvm
branches/Cog/build.linux64x64/newspeak.cog.spur/build.debug.itimerheartbeat/mvm
branches/Cog/build.linux64x64/newspeak.cog.spur/build.itimerheartbeat/mvm
branches/Cog/build.linux64x64/newspeak.stack.spur/build/mvm
branches/Cog/build.linux64x64/newspeak.stack.spur/build.assert/mvm
branches/Cog/build.linux64x64/newspeak.stack.spur/build.debug/mvm
branches/Cog/build.macos32x86/newspeak.cog.spur/CoreVM.xcodeproj/project.pbxproj
branches/Cog/build.macos32x86/newspeak.cog.v3/CoreVM.xcodeproj/project.pbxproj
branches/Cog/build.macos32x86/newspeak.stack.spur/CoreVM.xcodeproj/project.pbxproj
branches/Cog/build.win32x86/newspeak.cog.spur/Makefile
branches/Cog/build.win32x86/newspeak.cog.v3/Makefile
branches/Cog/build.win32x86/newspeak.stack.spur/Makefile
branches/Cog/nsspursrc/vm/cogit.c
branches/Cog/nsspursrc/vm/cogit.h
branches/Cog/nsspursrc/vm/cointerp.c
branches/Cog/nsspursrc/vm/cointerp.h
branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
branches/Cog/nsspurstacksrc/vm/interp.c
branches/Cog/platforms/Cross/vm/dispdbg.h
branches/Cog/scripts/svnci
branches/Cog/sistasrc/vm/cogit.c
branches/Cog/sistasrc/vm/cogit.h
branches/Cog/sistasrc/vm/cointerp.c
branches/Cog/sistasrc/vm/cointerp.h
branches/Cog/sistasrc/vm/gcc3x-cointerp.c
branches/Cog/spursistasrc/vm/cogit.c
branches/Cog/spursistasrc/vm/cogit.h
branches/Cog/spursistasrc/vm/cointerp.c
branches/Cog/spursistasrc/vm/cointerp.h
branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
branches/Cog/spursrc/vm/cogit.c
branches/Cog/spursrc/vm/cogit.h
branches/Cog/spursrc/vm/cointerp.c
branches/Cog/spursrc/vm/cointerp.h
branches/Cog/spursrc/vm/gcc3x-cointerp.c
branches/Cog/spurstack64src/vm/exampleSqNamedPrims.h
branches/Cog/spurstack64src/vm/gcc3x-interp.c
branches/Cog/spurstack64src/vm/interp.c
branches/Cog/spurstacksrc/vm/gcc3x-interp.c
branches/Cog/spurstacksrc/vm/interp.c
branches/Cog/src/plugins/AioPlugin/AioPlugin.c
branches/Cog/src/plugins/B2DPlugin/B2DPlugin.c
branches/Cog/src/plugins/LargeIntegers/LargeIntegers.c
branches/Cog/src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c
branches/Cog/src/plugins/SqueakFFIPrims/IA32FFIPlugin.c
branches/Cog/src/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c
branches/Cog/src/plugins/Win32OSProcessPlugin/Win32OSProcessPlugin.c
branches/Cog/src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c
branches/Cog/src/vm/cogit.c
branches/Cog/src/vm/cogit.h
branches/Cog/src/vm/cointerp.c
branches/Cog/src/vm/cointerp.h
branches/Cog/src/vm/cointerpmt.c
branches/Cog/src/vm/cointerpmt.h
branches/Cog/src/vm/gcc3x-cointerp.c
branches/Cog/src/vm/gcc3x-cointerpmt.c
branches/Cog/stacksrc/vm/gcc3x-interp.c
branches/Cog/stacksrc/vm/interp.c
Added Paths:
-----------
branches/Cog/nsspursrc/plugins/
branches/Cog/nsspursrc/plugins/AioPlugin/AioPlugin.c
branches/Cog/nsspursrc/plugins/AsynchFilePlugin/AsynchFilePlugin.c
branches/Cog/nsspursrc/plugins/B2DPlugin/B2DPlugin.c
branches/Cog/nsspursrc/plugins/BitBltPlugin/BitBltPlugin.c
branches/Cog/nsspursrc/plugins/DSAPrims/DSAPrims.c
branches/Cog/nsspursrc/plugins/FilePlugin/FilePlugin.c
branches/Cog/nsspursrc/plugins/FloatMathPlugin/FloatMathPlugin.c
branches/Cog/nsspursrc/plugins/IA32ABI/IA32ABI.c
branches/Cog/nsspursrc/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c
branches/Cog/nsspursrc/plugins/LargeIntegers/LargeIntegers.c
branches/Cog/nsspursrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
branches/Cog/nsspursrc/plugins/RePlugin/RePlugin.c
branches/Cog/nsspursrc/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c
branches/Cog/nsspursrc/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c
branches/Cog/nsspursrc/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c
branches/Cog/nsspursrc/plugins/Win32OSProcessPlugin/Win32OSProcessPlugin.c
branches/Cog/nsspursrc/plugins/ZipPlugin/ZipPlugin.c
Removed Paths:
-------------
branches/Cog/nscogsrc/plugins/
branches/Cog/nsspursrc/plugins/AioPlugin/AioPlugin.c
branches/Cog/nsspursrc/plugins/AsynchFilePlugin/AsynchFilePlugin.c
branches/Cog/nsspursrc/plugins/B2DPlugin/B2DPlugin.c
branches/Cog/nsspursrc/plugins/BitBltPlugin/BitBltPlugin.c
branches/Cog/nsspursrc/plugins/DSAPrims/DSAPrims.c
branches/Cog/nsspursrc/plugins/FilePlugin/FilePlugin.c
branches/Cog/nsspursrc/plugins/FloatMathPlugin/FloatMathPlugin.c
branches/Cog/nsspursrc/plugins/IA32ABI/IA32ABI.c
branches/Cog/nsspursrc/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c
branches/Cog/nsspursrc/plugins/LargeIntegers/LargeIntegers.c
branches/Cog/nsspursrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
branches/Cog/nsspursrc/plugins/RePlugin/RePlugin.c
branches/Cog/nsspursrc/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c
branches/Cog/nsspursrc/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c
branches/Cog/nsspursrc/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c
branches/Cog/nsspursrc/plugins/Win32OSProcessPlugin/Win32OSProcessPlugin.c
branches/Cog/nsspursrc/plugins/ZipPlugin/ZipPlugin.c
Property Changed:
----------------
branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/build.linux32x86/newspeak.cog.spur/build/mvm
===================================================================
--- branches/Cog/build.linux32x86/newspeak.cog.spur/build/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux32x86/newspeak.cog.spur/build/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -22,7 +22,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspursrc --with-plugins=nscogsrc/plugins \
+ --with-src=nsspursrc --with-plugins=nsspursrc/plugins \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m32" \
CXX="g++ -m32" \
Modified: branches/Cog/build.linux32x86/newspeak.cog.spur/build.assert/mvm
===================================================================
--- branches/Cog/build.linux32x86/newspeak.cog.spur/build.assert/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux32x86/newspeak.cog.spur/build.assert/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -18,7 +18,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspursrc --with-plugins=nscogsrc/plugins \
+ --with-src=nsspursrc --with-plugins=nsspursrc/plugins \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m32" \
CXX="g++ -m32" \
Modified: branches/Cog/build.linux32x86/newspeak.cog.spur/build.assert.itimerheartbeat/mvm
===================================================================
--- branches/Cog/build.linux32x86/newspeak.cog.spur/build.assert.itimerheartbeat/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux32x86/newspeak.cog.spur/build.assert.itimerheartbeat/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -18,7 +18,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspursrc --with-plugins=nscogsrc/plugins \
+ --with-src=nsspursrc --with-plugins=nsspursrc/plugins \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m32" \
CXX="g++ -m32" \
Modified: branches/Cog/build.linux32x86/newspeak.cog.spur/build.debug/mvm
===================================================================
--- branches/Cog/build.linux32x86/newspeak.cog.spur/build.debug/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux32x86/newspeak.cog.spur/build.debug/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -18,7 +18,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspursrc --with-plugins=nscogsrc/plugins \
+ --with-src=nsspursrc --with-plugins=nsspursrc/plugins \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m32" \
CXX="g++ -m32" \
Modified: branches/Cog/build.linux32x86/newspeak.cog.spur/build.debug.itimerheartbeat/mvm
===================================================================
--- branches/Cog/build.linux32x86/newspeak.cog.spur/build.debug.itimerheartbeat/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux32x86/newspeak.cog.spur/build.debug.itimerheartbeat/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -18,7 +18,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspursrc --with-plugins=nscogsrc/plugins \
+ --with-src=nsspursrc --with-plugins=nsspursrc/plugins \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m32" \
CXX="g++ -m32" \
Modified: branches/Cog/build.linux32x86/newspeak.cog.spur/build.itimerheartbeat/mvm
===================================================================
--- branches/Cog/build.linux32x86/newspeak.cog.spur/build.itimerheartbeat/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux32x86/newspeak.cog.spur/build.itimerheartbeat/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -22,7 +22,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspursrc --with-plugins=nscogsrc/plugins \
+ --with-src=nsspursrc --with-plugins=nsspursrc/plugins \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m32" \
CXX="g++ -m32" \
Modified: branches/Cog/build.linux32x86/newspeak.stack.spur/build/mvm
===================================================================
--- branches/Cog/build.linux32x86/newspeak.stack.spur/build/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux32x86/newspeak.stack.spur/build/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -22,7 +22,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspurstacksrc --with-plugins=nscogsrc/plugins --disable-cogit \
+ --with-src=nsspurstacksrc --with-plugins=nsspursrc/plugins --disable-cogit \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m32" \
CXX="g++ -m32" \
Modified: branches/Cog/build.linux32x86/newspeak.stack.spur/build.assert/mvm
===================================================================
--- branches/Cog/build.linux32x86/newspeak.stack.spur/build.assert/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux32x86/newspeak.stack.spur/build.assert/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -18,7 +18,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspurstacksrc --with-plugins=nscogsrc/plugins --disable-cogit \
+ --with-src=nsspurstacksrc --with-plugins=nsspursrc/plugins --disable-cogit \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m32" \
CXX="g++ -m32" \
Modified: branches/Cog/build.linux32x86/newspeak.stack.spur/build.debug/mvm
===================================================================
--- branches/Cog/build.linux32x86/newspeak.stack.spur/build.debug/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux32x86/newspeak.stack.spur/build.debug/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -18,7 +18,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspurstacksrc --with-plugins=nscogsrc/plugins --disable-cogit \
+ --with-src=nsspurstacksrc --with-plugins=nsspursrc/plugins --disable-cogit \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m32" \
CXX="g++ -m32" \
Modified: branches/Cog/build.linux64x64/newspeak.cog.spur/build/mvm
===================================================================
--- branches/Cog/build.linux64x64/newspeak.cog.spur/build/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux64x64/newspeak.cog.spur/build/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -22,7 +22,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspur64src --with-plugins=nscogsrc/plugins \
+ --with-src=nsspur64src --with-plugins=nsspursrc/plugins \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m64" \
CXX="g++ -m64" \
Modified: branches/Cog/build.linux64x64/newspeak.cog.spur/build.assert/mvm
===================================================================
--- branches/Cog/build.linux64x64/newspeak.cog.spur/build.assert/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux64x64/newspeak.cog.spur/build.assert/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -18,7 +18,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspur64src --with-plugins=nscogsrc/plugins \
+ --with-src=nsspur64src --with-plugins=nsspursrc/plugins \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m64" \
CXX="g++ -m64" \
Modified: branches/Cog/build.linux64x64/newspeak.cog.spur/build.assert.itimerheartbeat/mvm
===================================================================
--- branches/Cog/build.linux64x64/newspeak.cog.spur/build.assert.itimerheartbeat/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux64x64/newspeak.cog.spur/build.assert.itimerheartbeat/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -18,7 +18,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspur64src --with-plugins=nscogsrc/plugins \
+ --with-src=nsspur64src --with-plugins=nsspursrc/plugins \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m64" \
CXX="g++ -m64" \
Modified: branches/Cog/build.linux64x64/newspeak.cog.spur/build.debug/mvm
===================================================================
--- branches/Cog/build.linux64x64/newspeak.cog.spur/build.debug/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux64x64/newspeak.cog.spur/build.debug/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -18,7 +18,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspur64src --with-plugins=nscogsrc/plugins \
+ --with-src=nsspur64src --with-plugins=nsspursrc/plugins \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m64" \
CXX="g++ -m64" \
Modified: branches/Cog/build.linux64x64/newspeak.cog.spur/build.debug.itimerheartbeat/mvm
===================================================================
--- branches/Cog/build.linux64x64/newspeak.cog.spur/build.debug.itimerheartbeat/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux64x64/newspeak.cog.spur/build.debug.itimerheartbeat/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -18,7 +18,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspur64src --with-plugins=nscogsrc/plugins \
+ --with-src=nsspur64src --with-plugins=nsspursrc/plugins \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m64" \
CXX="g++ -m64" \
Modified: branches/Cog/build.linux64x64/newspeak.cog.spur/build.itimerheartbeat/mvm
===================================================================
--- branches/Cog/build.linux64x64/newspeak.cog.spur/build.itimerheartbeat/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux64x64/newspeak.cog.spur/build.itimerheartbeat/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -22,7 +22,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspur64src --with-plugins=nscogsrc/plugins \
+ --with-src=nsspur64src --with-plugins=nsspursrc/plugins \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m64" \
CXX="g++ -m64" \
Modified: branches/Cog/build.linux64x64/newspeak.stack.spur/build/mvm
===================================================================
--- branches/Cog/build.linux64x64/newspeak.stack.spur/build/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux64x64/newspeak.stack.spur/build/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -22,7 +22,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspurstack64src --with-plugins=nscogsrc/plugins --disable-cogit \
+ --with-src=nsspurstack64src --with-plugins=nsspursrc/plugins --disable-cogit \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m64" \
CXX="g++ -m64" \
Modified: branches/Cog/build.linux64x64/newspeak.stack.spur/build.assert/mvm
===================================================================
--- branches/Cog/build.linux64x64/newspeak.stack.spur/build.assert/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux64x64/newspeak.stack.spur/build.assert/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -18,7 +18,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspurstack64src --with-plugins=nscogsrc/plugins --disable-cogit \
+ --with-src=nsspurstack64src --with-plugins=nsspursrc/plugins --disable-cogit \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m64" \
CXX="g++ -m64" \
Modified: branches/Cog/build.linux64x64/newspeak.stack.spur/build.debug/mvm
===================================================================
--- branches/Cog/build.linux64x64/newspeak.stack.spur/build.debug/mvm 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.linux64x64/newspeak.stack.spur/build.debug/mvm 2015-02-24 22:04:06 UTC (rev 3263)
@@ -18,7 +18,7 @@
esac
test -f config.h || ../../../platforms/unix/config/configure \
--with-vmversion=5.0 \
- --with-src=nsspurstack64src --with-plugins=nscogsrc/plugins --disable-cogit \
+ --with-src=nsspurstack64src --with-plugins=nsspursrc/plugins --disable-cogit \
--without-vm-display-fbdev --without-npsqueak \
CC="gcc -m64" \
CXX="g++ -m64" \
Modified: branches/Cog/build.macos32x86/newspeak.cog.spur/CoreVM.xcodeproj/project.pbxproj
===================================================================
--- branches/Cog/build.macos32x86/newspeak.cog.spur/CoreVM.xcodeproj/project.pbxproj 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.macos32x86/newspeak.cog.spur/CoreVM.xcodeproj/project.pbxproj 2015-02-24 22:04:06 UTC (rev 3263)
@@ -607,7 +607,7 @@
A27729370CE7A8D300ABAFCA /* ZipPlugin.c */,
);
name = plugins;
- path = ../../nscogsrc/plugins;
+ path = ../../nsspursrc/plugins;
sourceTree = "<group>";
};
738FB1E80EE4CF4B004BEE42 /* IA32ABI */ = {
Modified: branches/Cog/build.macos32x86/newspeak.cog.v3/CoreVM.xcodeproj/project.pbxproj
===================================================================
--- branches/Cog/build.macos32x86/newspeak.cog.v3/CoreVM.xcodeproj/project.pbxproj 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.macos32x86/newspeak.cog.v3/CoreVM.xcodeproj/project.pbxproj 2015-02-24 22:04:06 UTC (rev 3263)
@@ -609,7 +609,7 @@
A27729370CE7A8D300ABAFCA /* ZipPlugin.c */,
);
name = plugins;
- path = ../../nscogsrc/plugins;
+ path = ../../nsspursrc/plugins;
sourceTree = "<group>";
};
738FB1E80EE4CF4B004BEE42 /* IA32ABI */ = {
Modified: branches/Cog/build.macos32x86/newspeak.stack.spur/CoreVM.xcodeproj/project.pbxproj
===================================================================
--- branches/Cog/build.macos32x86/newspeak.stack.spur/CoreVM.xcodeproj/project.pbxproj 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.macos32x86/newspeak.stack.spur/CoreVM.xcodeproj/project.pbxproj 2015-02-24 22:04:06 UTC (rev 3263)
@@ -597,7 +597,7 @@
A27729370CE7A8D300ABAFCA /* ZipPlugin.c */,
);
name = plugins;
- path = ../../nscogsrc/plugins;
+ path = ../../nsspursrc/plugins;
sourceTree = "<group>";
};
738FB1E80EE4CF4B004BEE42 /* IA32ABI */ = {
Modified: branches/Cog/build.win32x86/newspeak.cog.spur/Makefile
===================================================================
--- branches/Cog/build.win32x86/newspeak.cog.spur/Makefile 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.win32x86/newspeak.cog.spur/Makefile 2015-02-24 22:04:06 UTC (rev 3263)
@@ -27,7 +27,7 @@
else
BUILD:=builddbg
endif
-PLUGINSRCDIR:= ../../nscogsrc
+PLUGINSRCDIR:= ../../nsspursrc
VMSRCDIR:= ../../nsspursrc
BLDDIR:= $(BASEDIR)/$(BUILD)
OBJDIR:= $(BLDDIR)/vm
Modified: branches/Cog/build.win32x86/newspeak.cog.v3/Makefile
===================================================================
--- branches/Cog/build.win32x86/newspeak.cog.v3/Makefile 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.win32x86/newspeak.cog.v3/Makefile 2015-02-24 22:04:06 UTC (rev 3263)
@@ -27,7 +27,7 @@
else
BUILD:=builddbg
endif
-PLUGINSRCDIR:= ../../nscogsrc
+PLUGINSRCDIR:= ../../nsspursrc
VMSRCDIR:= ../../nscogsrc
BLDDIR:= $(BASEDIR)/$(BUILD)
OBJDIR:= $(BLDDIR)/vm
Modified: branches/Cog/build.win32x86/newspeak.stack.spur/Makefile
===================================================================
--- branches/Cog/build.win32x86/newspeak.stack.spur/Makefile 2015-02-23 00:31:15 UTC (rev 3262)
+++ branches/Cog/build.win32x86/newspeak.stack.spur/Makefile 2015-02-24 22:04:06 UTC (rev 3263)
@@ -27,7 +27,7 @@
else
BUILD:=builddbg
endif
-PLUGINSRCDIR:= ../../nscogsrc
+PLUGINSRCDIR:= ../../nsspursrc
VMSRCDIR:= ../../nsspurstacksrc
BLDDIR:= $(BASEDIR)/$(BUILD)
OBJDIR:= $(BLDDIR)/vm
Deleted: branches/Cog/nsspursrc/plugins/AioPlugin/AioPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/AioPlugin/AioPlugin.c 2015-01-07 00:59:06 UTC (rev 3216)
+++ branches/Cog/nsspursrc/plugins/AioPlugin/AioPlugin.c 2015-02-24 22:04:06 UTC (rev 3263)
@@ -1,711 +0,0 @@
-/* Automatically generated by
- VMPluginCodeGenerator VMMaker.oscog-eem.983 uuid: 4cdca841-6318-4c49-95de-8c47d0d7e91d
- from
- UnixAioPlugin VMConstruction-Plugins-AioPlugin-eem.17 uuid: a2b39cb2-e681-4bc3-a777-f03b2e3f2de0
- */
-static char __buildInfo[] = "UnixAioPlugin VMConstruction-Plugins-AioPlugin-eem.17 uuid: a2b39cb2-e681-4bc3-a777-f03b2e3f2de0 " __DATE__ ;
-
-
-
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-#define FILEHANDLETYPE FILE * /* the type of low level stream to be used in a struct SQFile */
-
-/* Default EXPORT macro that does nothing (see comment in sq.h): */
-#define EXPORT(returnType) returnType
-
-/* Do not include the entire sq.h file but just those parts needed. */
-/* The virtual machine proxy definition */
-#include "sqVirtualMachine.h"
-/* Configuration options */
-#include "sqConfig.h"
-/* Platform specific definitions */
-#include "sqPlatformSpecific.h"
-
-#define true 1
-#define false 0
-#define null 0 /* using 'null' because nil is predefined in Think C */
-#ifdef SQUEAK_BUILTIN_PLUGIN
-#undef EXPORT
-// was #undef EXPORT(returnType) but screws NorCroft cc
-#define EXPORT(returnType) static returnType
-#endif
-
-#include "FilePlugin.h"
-#include "SocketPlugin.h"
-#include "config.h"
-#define SESSIONIDENTIFIERTYPE int
-#include "sqaio.h"
-#include "sqMemoryAccess.h"
-
-
-/*** Constants ***/
-
-
-/*** Function Prototypes ***/
-static void aioForwardwithDataandFlags(int fd, void *data, int flags);
-static sqInt fileDescriptorFrom(sqInt aSQFileByteArray);
-static FILEHANDLETYPE fileHandleFrom(sqInt sqFileStructByteArray);
-static sqInt fileRecordSize(void);
-static SQFile * fileValueOf(sqInt anSQFileRecord);
-EXPORT(const char*) getModuleName(void);
-static sqInt getThisSessionIdentifier(void);
-EXPORT(sqInt) initialiseModule(void);
-static sqInt isNonNullSQFile(sqInt objectPointer);
-static sqInt isNullSQSocket(sqInt objectPointer);
-static sqInt isSQFileObject(sqInt objectPointer);
-static sqInt isSQSocketObject(sqInt objectPointer);
-static sqInt isValidFileSession(sqInt objectPointer);
-EXPORT(sqInt) moduleUnloaded(char *aModuleName);
-EXPORT(sqInt) primitiveAioDisable(void);
-EXPORT(sqInt) primitiveAioEnable(void);
-EXPORT(sqInt) primitiveAioHandle(void);
-EXPORT(sqInt) primitiveAioSuspend(void);
-EXPORT(sqInt) primitiveModuleName(void);
-EXPORT(sqInt) primitiveOSFileHandle(void);
-EXPORT(sqInt) primitiveOSSocketHandle(void);
-EXPORT(sqInt) primitiveVersionString(void);
-static SESSIONIDENTIFIERTYPE sessionIdentifierFromSqFile(SQFile *sqFile);
-EXPORT(sqInt) setInterpreter(struct VirtualMachine*anInterpreter);
-EXPORT(sqInt) shutdownModule(void);
-static int socketDescriptorFrom(sqInt sqSocketOop);
-static sqInt socketRecordSize(void);
-static SQSocket * socketValueOf(sqInt anSQSocketRecord);
-static sqInt stringFromCString(const char *aCString);
-static char * versionString(void);
-
-
-/*** Variables ***/
-
-#if !defined(SQUEAK_BUILTIN_PLUGIN)
-static void * (*arrayValueOf)(sqInt oop);
-static sqInt (*byteSizeOf)(sqInt oop);
-static sqInt (*classString)(void);
-static sqInt (*getThisSessionID)(void);
-static sqInt (*instantiateClassindexableSize)(sqInt classPointer, sqInt size);
-static sqInt (*isBytes)(sqInt oop);
-static sqInt (*nilObject)(void);
-static sqInt (*pop)(sqInt nItems);
-static sqInt (*popthenPush)(sqInt nItems, sqInt oop);
-static sqInt (*primitiveFail)(void);
-static sqInt (*pushInteger)(sqInt integerValue);
-static sqInt (*signalSemaphoreWithIndex)(sqInt semaIndex);
-static sqInt (*stackIntegerValue)(sqInt offset);
-static sqInt (*stackObjectValue)(sqInt offset);
-static sqInt (*stackValue)(sqInt offset);
-static sqInt (*trueObject)(void);
-#else /* !defined(SQUEAK_BUILTIN_PLUGIN) */
-extern void * arrayValueOf(sqInt oop);
-extern sqInt byteSizeOf(sqInt oop);
-extern sqInt classString(void);
-extern sqInt getThisSessionID(void);
-extern sqInt instantiateClassindexableSize(sqInt classPointer, sqInt size);
-extern sqInt isBytes(sqInt oop);
-extern sqInt nilObject(void);
-extern sqInt pop(sqInt nItems);
-extern sqInt popthenPush(sqInt nItems, sqInt oop);
-extern sqInt primitiveFail(void);
-extern sqInt pushInteger(sqInt integerValue);
-extern sqInt signalSemaphoreWithIndex(sqInt semaIndex);
-extern sqInt stackIntegerValue(sqInt offset);
-extern sqInt stackObjectValue(sqInt offset);
-extern sqInt stackValue(sqInt offset);
-extern sqInt trueObject(void);
-extern
-#endif
-struct VirtualMachine* interpreterProxy;
-static const char *moduleName =
-#ifdef SQUEAK_BUILTIN_PLUGIN
- "AioPlugin VMConstruction-Plugins-AioPlugin-eem.17 (i)"
-#else
- "AioPlugin VMConstruction-Plugins-AioPlugin-eem.17 (e)"
-#endif
-;
-
-
-
-/* This function is called to signal a Smalltalk Semaphore when an
- asynchronous event is
- detected. When translated to C, the name of this method is
- aioForwardwithDataandFlags. The event handler is set up by
- #primitiveAioHandle.
- */
-
-static void
-aioForwardwithDataandFlags(int fd, void *data, int flags)
-{
- int *pfd;
- sqInt semaIndex;
-
- pfd = data;
- semaIndex = *pfd;
- signalSemaphoreWithIndex(semaIndex);
-}
-
-
-/* Answer the OS file descriptor, an integer value, from a SQFile data
- structure byte array, or answer -1 if unable to obtain the file descriptor
- (probably due
- to receiving an incorrect type of object as aFileHandle).
- */
-/* return type should be int, but skip the declaration to permit inlining */
-
-static sqInt
-fileDescriptorFrom(sqInt aSQFileByteArray)
-{
- if (!((((isBytes(aSQFileByteArray))
- && ((byteSizeOf(aSQFileByteArray)) == (sizeof(SQFile))))
- && ((getThisSessionID()) == (sessionIdentifierFromSqFile(arrayValueOf(aSQFileByteArray)))))
- && (isNonNullSQFile(aSQFileByteArray)))) {
- return -1;
- }
- return fileno(fileHandleFrom(aSQFileByteArray));
-}
-
-
-/* Answer a file handle from a SQFile structure. On most platforms, this
- will be a (FILE *). On Win32, it is a HANDLE. */
-
-static FILEHANDLETYPE
-fileHandleFrom(sqInt sqFileStructByteArray)
-{
- SQFile *sqFile;
-
- sqFile = arrayValueOf(sqFileStructByteArray);
- return sqFile->file;
-}
-
-
-/* Answer the size of a SQFile data structure in bytes. */
-
-static sqInt
-fileRecordSize(void)
-{
- return sizeof(SQFile);
-}
-
-
-/* Return a pointer to the first byte of of the SQFile data structure file
- record within
- anSQFileRecord, which is expected to be a ByteArray of size
- self>>fileRecordSize.
- */
-
-static SQFile *
-fileValueOf(sqInt anSQFileRecord)
-{
- return arrayValueOf(anSQFileRecord);
-}
-
-
-/* Note: This is hardcoded so it can be run from Squeak.
- The module name is used for validating a module *after*
- it is loaded to check if it does really contain the module
- we're thinking it contains. This is important! */
-
-EXPORT(const char*)
-getModuleName(void)
-{
- return moduleName;
-}
-
-static sqInt
-getThisSessionIdentifier(void)
-{
- return getThisSessionID();
-}
-
-EXPORT(sqInt)
-initialiseModule(void)
-{
- return 1;
-}
-
-
-/* Check for the common failure mode of a SQFile record with all zeros. */
-
-static sqInt
-isNonNullSQFile(sqInt objectPointer)
-{
- unsigned idx;
- unsigned char *sqFileBytes;
-
- sqFileBytes = arrayValueOf(objectPointer);
- idx = 0;
- while (idx < (sizeof(SQFile))) {
- if ((sqFileBytes[idx]) != 0) {
- return 1;
- }
- idx += 1;
- }
- return 0;
-}
-
-
-/* Check for the common failure mode of a SQSocket record with all zeros. */
-
-static sqInt
-isNullSQSocket(sqInt objectPointer)
-{
- sqInt idx;
- unsigned char *sqSocketBytes;
-
- sqSocketBytes = arrayValueOf(objectPointer);
- idx = 0;
- while (idx < (socketRecordSize())) {
- if ((sqSocketBytes[idx]) != 0) {
- return 0;
- }
- idx += 1;
- }
- return 1;
-}
-
-
-/* Answer true if objectPointer appears to be a valid SQFile ByteArray.
- This check is appropriate if objectPointer has been passed as a parameter
- to a primitive, and is expected to represent a valid file reference. */
-
-static sqInt
-isSQFileObject(sqInt objectPointer)
-{
- return (((isBytes(objectPointer))
- && ((byteSizeOf(objectPointer)) == (sizeof(SQFile))))
- && ((getThisSessionID()) == (sessionIdentifierFromSqFile(arrayValueOf(objectPointer)))))
- && (isNonNullSQFile(objectPointer));
-}
-
-
-/* Answer true if objectPointer appears to be a valid SQSocket ByteArray.
- This check
- is appropriate if objectPointer has been passed as a parameter to a
- primitive, and
- is expected to represent a valid socket reference.
- */
-
-static sqInt
-isSQSocketObject(sqInt objectPointer)
-{
- return ((isBytes(objectPointer))
- && ((byteSizeOf(objectPointer)) == (socketRecordSize())))
- && (!(isNullSQSocket(objectPointer)));
-}
-
-
-/* Answer true if the file session matches the current interpreter session
- identifier.
- */
-
-static sqInt
-isValidFileSession(sqInt objectPointer)
-{
- return (getThisSessionID()) == (sessionIdentifierFromSqFile(arrayValueOf(objectPointer)));
-}
-
-
-/* The module with the given name was just unloaded.
- Make sure we have no dangling references. */
-
-EXPORT(sqInt)
-moduleUnloaded(char *aModuleName)
-{
-}
-
-
-/* Definitively disable asynchronous event notification for a descriptor. The
- parameter is an OS level integer file descriptor. */
-
-EXPORT(sqInt)
-primitiveAioDisable(void)
-{
- sqInt fd;
-
- if ((nilObject()) == (stackValue(0))) {
- return primitiveFail();
- }
- fd = stackIntegerValue(0);
- if (fd < 0) {
- return primitiveFail();
- }
- aioDisable(fd);
- pop(2);
- pushInteger(fd);
-}
-
-
-/* Enable asynchronous notification for a descriptor. The first parameter is
- an OS
- level integer file descriptor. The second parameter is the index of a
- Semaphore to
- be notified, and the third parameter is a flag indicating that descriptor
- represents an external object and should not be closed on termination of
- aio handling. Answer
- the semaphore index.
- */
-
-EXPORT(sqInt)
-primitiveAioEnable(void)
-{
- static int eventSemaphoreIndices[FD_SETSIZE];
- sqInt externalObject;
- sqInt fd;
- sqInt flags;
- sqInt semaIndex;
-
- if ((nilObject()) == (stackValue(2))) {
- return primitiveFail();
- }
- fd = stackIntegerValue(2);
- if (fd < 0) {
- return primitiveFail();
- }
- semaIndex = stackIntegerValue(1);
- eventSemaphoreIndices[semaIndex] = semaIndex;
- externalObject = stackObjectValue(0);
- if (externalObject == (trueObject())) {
- flags = AIO_EXT;
- }
- else {
- flags = 0;
- }
- aioEnable(fd, &(eventSemaphoreIndices[semaIndex]), flags);
- pop(4);
- pushInteger(semaIndex);
-}
-
-
-/* Handle asynchronous event notification for a descriptor. The first
- parameter is
- an OS level integer file descriptor. The remaining three parameters are
- Boolean flags representing the types of events for which notification is
- being requested:
- handle exceptions, handle for read, and handle for write.
- Flags are defined in the aio.h source as:
- AIO_X (1<<0) handle for exceptions
- AIO_R (1<<1) handle for read
- AIO_W (1<<2) handle for write */
-
-EXPORT(sqInt)
-primitiveAioHandle(void)
-{
- sqInt exceptionWatch;
- sqInt fd;
- sqInt flags;
- sqInt readWatch;
- sqInt writeWatch;
-
- if ((nilObject()) == (stackValue(3))) {
- return primitiveFail();
- }
- fd = stackIntegerValue(3);
- if (fd < 0) {
- return primitiveFail();
- }
- exceptionWatch = stackObjectValue(2);
- readWatch = stackObjectValue(1);
- writeWatch = stackObjectValue(0);
- flags = 0;
- if (exceptionWatch == (trueObject())) {
- flags = flags | (AIO_X);
- }
- if (readWatch == (trueObject())) {
- flags = flags | (AIO_R);
- }
- if (writeWatch == (trueObject())) {
- flags = flags | (AIO_W);
- }
- aioHandle(fd, aioForwardwithDataandFlags, flags);
- pop(5);
- pushInteger(flags);
-}
-
-
-/* Temporarily suspend asynchronous event notification for a descriptor. The
- first parameter is an OS level integer file descriptor. The remaining
- three parameters
- are Boolean flags representing the types of events for which notification
- is being
- requested: handle exceptions, handle for read, and handle for write.
- Flags are defined in the aio.h source as:
- AIO_X (1<<0) handle for exceptions
- AIO_R (1<<1) handle for read
- AIO_W (1<<2) handle for write */
-
-EXPORT(sqInt)
-primitiveAioSuspend(void)
-{
- sqInt exceptionWatch;
- sqInt fd;
- sqInt flags;
- sqInt readWatch;
- sqInt writeWatch;
-
- if ((nilObject()) == (stackValue(3))) {
- return primitiveFail();
- }
- fd = stackIntegerValue(3);
- if (fd < 0) {
- return primitiveFail();
- }
- exceptionWatch = stackObjectValue(2);
- readWatch = stackObjectValue(1);
- writeWatch = stackObjectValue(0);
- flags = 0;
- if (exceptionWatch == (trueObject())) {
- flags = flags | (AIO_X);
- }
- if (readWatch == (trueObject())) {
- flags = flags | (AIO_R);
- }
- if (writeWatch == (trueObject())) {
- flags = flags | (AIO_W);
- }
- aioSuspend(fd, flags);
- pop(5);
- pushInteger(flags);
-}
-
-
-/* Answer a string containing the module name string for this plugin. */
-
-EXPORT(sqInt)
-primitiveModuleName(void)
-{
- popthenPush(1, stringFromCString(getModuleName()));
-}
-
-
-/* Take a struct SQFile from the stack, and answer the value of its Unix file
- number.
- */
-
-EXPORT(sqInt)
-primitiveOSFileHandle(void)
-{
- sqInt fileNo;
- sqInt sqFileOop;
-
- sqFileOop = stackValue(0);
- if (!((((isBytes(sqFileOop))
- && ((byteSizeOf(sqFileOop)) == (sizeof(SQFile))))
- && ((getThisSessionID()) == (sessionIdentifierFromSqFile(arrayValueOf(sqFileOop)))))
- && (isNonNullSQFile(sqFileOop)))) {
- return primitiveFail();
- }
- /* begin fileDescriptorFrom: */
- if (!((((isBytes(sqFileOop))
- && ((byteSizeOf(sqFileOop)) == (sizeof(SQFile))))
- && ((getThisSessionID()) == (sessionIdentifierFromSqFile(arrayValueOf(sqFileOop)))))
- && (isNonNullSQFile(sqFileOop)))) {
- fileNo = -1;
- goto l1;
- }
- fileNo = fileno(fileHandleFrom(sqFileOop));
-l1: /* end fileDescriptorFrom: */;
- pop(2);
- pushInteger(fileNo);
-}
-
-
-/* Take a struct SQSocket from the stack, and answer the value of its Unix
- file number.
- */
-
-EXPORT(sqInt)
-primitiveOSSocketHandle(void)
-{
- int fileNo;
- sqInt sqSocketOop;
-
- sqSocketOop = stackValue(0);
- if (!(((isBytes(sqSocketOop))
- && ((byteSizeOf(sqSocketOop)) == (socketRecordSize())))
- && (!(isNullSQSocket(sqSocketOop))))) {
- return primitiveFail();
- }
- fileNo = socketDescriptorFrom(sqSocketOop);
- if (fileNo < 0) {
- return primitiveFail();
- }
- pop(2);
- pushInteger(fileNo);
-}
-
-
-/* Answer a string containing the version string for this plugin. */
-
-EXPORT(sqInt)
-primitiveVersionString(void)
-{
- popthenPush(1, stringFromCString(versionString()));
-}
-
-
-/* Answer the session identifier from a SQFile structure. For a valid file
- reference, this identifier will match the session identifier supplied by
- the interpreter. */
-
-static SESSIONIDENTIFIERTYPE
-sessionIdentifierFromSqFile(SQFile *sqFile)
-{
- return sqFile->sessionID;
-}
-
-
-/* Note: This is coded so that it can be run in Squeak. */
-
-EXPORT(sqInt)
-setInterpreter(struct VirtualMachine*anInterpreter)
-{
- sqInt ok;
-
- interpreterProxy = anInterpreter;
- ok = ((interpreterProxy->majorVersion()) == (VM_PROXY_MAJOR))
- && ((interpreterProxy->minorVersion()) >= (VM_PROXY_MINOR));
- if (ok) {
-
-#if !defined(SQUEAK_BUILTIN_PLUGIN)
- arrayValueOf = interpreterProxy->arrayValueOf;
- byteSizeOf = interpreterProxy->byteSizeOf;
- classString = interpreterProxy->classString;
- getThisSessionID = interpreterProxy->getThisSessionID;
- instantiateClassindexableSize = interpreterProxy->instantiateClassindexableSize;
- isBytes = interpreterProxy->isBytes;
- nilObject = interpreterProxy->nilObject;
- pop = interpreterProxy->pop;
- popthenPush = interpreterProxy->popthenPush;
- primitiveFail = interpreterProxy->primitiveFail;
- pushInteger = interpreterProxy->pushInteger;
- signalSemaphoreWithIndex = interpreterProxy->signalSemaphoreWithIndex;
- stackIntegerValue = interpreterProxy->stackIntegerValue;
- stackObjectValue = interpreterProxy->stackObjectValue;
- stackValue = interpreterProxy->stackValue;
- trueObject = interpreterProxy->trueObject;
-#endif /* !defined(SQUEAK_BUILTIN_PLUGIN) */
- }
- return ok;
-}
-
-EXPORT(sqInt)
-shutdownModule(void)
-{
-}
-
-
-/* Answer the OS file descriptor, an integer value, from a SQSocket data
- structure, or answer -1 if unable to obtain the file descriptor (probably
- due to receiving
- an incorrect type of object as aFileHandle).
-
- Warning: The first element of privateSocketStruct happens to be the Unix
- file number of the socket. See sqUnixSocket.c for the definition. This
- method takes
- advantage of this, and will break if anyone ever redefines the data
- structure.
- */
-
-static int
-socketDescriptorFrom(sqInt sqSocketOop)
-{
- void *privateSocketStruct;
- SQSocket *sqSocket;
-
- /* begin socketValueOf: */
- sqSocket = arrayValueOf(sqSocketOop);
- privateSocketStruct = sqSocket->privateSocketPtr;
- if (privateSocketStruct == 0) {
- return -1;
- }
- return * (int *) privateSocketStruct;
-}
-
-
-/* Answer the size of a SQSocket data structure in bytes. */
-
-static sqInt
-socketRecordSize(void)
-{
- return sizeof(SQSocket);
-}
-
-
-/* Return a pointer to the first byte of of the SQsocket data structure
- socket record within
- anSQSocketRecord, which is expected to be a ByteArray of size
- self>>socketRecordSize.
- */
-
-static SQSocket *
-socketValueOf(sqInt anSQSocketRecord)
-{
- return arrayValueOf(anSQSocketRecord);
-}
-
-
-/* Answer a new String copied from a null-terminated C string.
- Caution: This may invoke the garbage collector. */
-
-static sqInt
-stringFromCString(const char *aCString)
-{
- sqInt len;
- sqInt newString;
-
- len = strlen(aCString);
- newString = instantiateClassindexableSize(classString(), len);
- strncpy(arrayValueOf(newString), aCString, len);
- return newString;
-}
-
-
-/* Answer a string containing the version string for this plugin. Handle MNU
- errors, which can occur if class InterpreterPlugin has been removed from
- the system.
-
- Important: When this method is changed, the class side method must also be
- changed to match.
- */
-/* 2.0 supports 64bit code base */
-
-static char *
-versionString(void)
-{
- static char version[]= "2.2.6";
-
- return version;
-}
-
-
-#ifdef SQUEAK_BUILTIN_PLUGIN
-
-void* AioPlugin_exports[][3] = {
- {"AioPlugin", "getModuleName", (void*)getModuleName},
- {"AioPlugin", "initialiseModule", (void*)initialiseModule},
- {"AioPlugin", "moduleUnloaded", (void*)moduleUnloaded},
- {"AioPlugin", "primitiveAioDisable\000\000", (void*)primitiveAioDisable},
- {"AioPlugin", "primitiveAioEnable\000\000", (void*)primitiveAioEnable},
- {"AioPlugin", "primitiveAioHandle\000\000", (void*)primitiveAioHandle},
- {"AioPlugin", "primitiveAioSuspend\000\000", (void*)primitiveAioSuspend},
- {"AioPlugin", "primitiveModuleName\000\377", (void*)primitiveModuleName},
- {"AioPlugin", "primitiveOSFileHandle\000\001", (void*)primitiveOSFileHandle},
- {"AioPlugin", "primitiveOSSocketHandle\000\001", (void*)primitiveOSSocketHandle},
- {"AioPlugin", "primitiveVersionString\000\377", (void*)primitiveVersionString},
- {"AioPlugin", "setInterpreter", (void*)setInterpreter},
- {"AioPlugin", "shutdownModule\000\377", (void*)shutdownModule},
- {NULL, NULL, NULL}
-};
-
-#else /* ifdef SQ_BUILTIN_PLUGIN */
-
-signed char primitiveAioDisableAccessorDepth = 0;
-signed char primitiveAioEnableAccessorDepth = 0;
-signed char primitiveAioHandleAccessorDepth = 0;
-signed char primitiveAioSuspendAccessorDepth = 0;
-signed char primitiveOSFileHandleAccessorDepth = 1;
-signed char primitiveOSSocketHandleAccessorDepth = 1;
-
-#endif /* ifdef SQ_BUILTIN_PLUGIN */
Copied: branches/Cog/nsspursrc/plugins/AioPlugin/AioPlugin.c (from rev 3260, branches/Cog/nscogsrc/plugins/AioPlugin/AioPlugin.c)
===================================================================
--- branches/Cog/nsspursrc/plugins/AioPlugin/AioPlugin.c (rev 0)
+++ branches/Cog/nsspursrc/plugins/AioPlugin/AioPlugin.c 2015-02-24 22:04:06 UTC (rev 3263)
@@ -0,0 +1,711 @@
+/* Automatically generated by
+ VMPluginCodeGenerator VMMaker.oscog-eem.1080 uuid: 8b1a09b7-4f58-4375-b16a-e42e63ffd542
+ from
+ UnixAioPlugin VMConstruction-Plugins-AioPlugin-eem.17 uuid: a2b39cb2-e681-4bc3-a777-f03b2e3f2de0
+ */
+static char __buildInfo[] = "UnixAioPlugin VMConstruction-Plugins-AioPlugin-eem.17 uuid: a2b39cb2-e681-4bc3-a777-f03b2e3f2de0 " __DATE__ ;
+
+
+
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+#define FILEHANDLETYPE FILE * /* the type of low level stream to be used in a struct SQFile */
+
+/* Default EXPORT macro that does nothing (see comment in sq.h): */
+#define EXPORT(returnType) returnType
+
+/* Do not include the entire sq.h file but just those parts needed. */
+/* The virtual machine proxy definition */
+#include "sqVirtualMachine.h"
+/* Configuration options */
+#include "sqConfig.h"
+/* Platform specific definitions */
+#include "sqPlatformSpecific.h"
+
+#define true 1
+#define false 0
+#define null 0 /* using 'null' because nil is predefined in Think C */
+#ifdef SQUEAK_BUILTIN_PLUGIN
+#undef EXPORT
+// was #undef EXPORT(returnType) but screws NorCroft cc
+#define EXPORT(returnType) static returnType
+#endif
+
+#include "FilePlugin.h"
+#include "SocketPlugin.h"
+#include "config.h"
+#define SESSIONIDENTIFIERTYPE int
+#include "sqaio.h"
+#include "sqMemoryAccess.h"
+
+
+/*** Constants ***/
+
+
+/*** Function Prototypes ***/
+static void aioForwardwithDataandFlags(int fd, void *data, int flags);
+static sqInt fileDescriptorFrom(sqInt aSQFileByteArray);
+static FILEHANDLETYPE fileHandleFrom(sqInt sqFileStructByteArray);
+static sqInt fileRecordSize(void);
+static SQFile * fileValueOf(sqInt anSQFileRecord);
+EXPORT(const char*) getModuleName(void);
+static sqInt getThisSessionIdentifier(void);
+EXPORT(sqInt) initialiseModule(void);
+static sqInt isNonNullSQFile(sqInt objectPointer);
+static sqInt isNullSQSocket(sqInt objectPointer);
+static sqInt isSQFileObject(sqInt objectPointer);
+static sqInt isSQSocketObject(sqInt objectPointer);
+static sqInt isValidFileSession(sqInt objectPointer);
+EXPORT(sqInt) moduleUnloaded(char *aModuleName);
+EXPORT(sqInt) primitiveAioDisable(void);
+EXPORT(sqInt) primitiveAioEnable(void);
+EXPORT(sqInt) primitiveAioHandle(void);
+EXPORT(sqInt) primitiveAioSuspend(void);
+EXPORT(sqInt) primitiveModuleName(void);
+EXPORT(sqInt) primitiveOSFileHandle(void);
+EXPORT(sqInt) primitiveOSSocketHandle(void);
+EXPORT(sqInt) primitiveVersionString(void);
+static SESSIONIDENTIFIERTYPE sessionIdentifierFromSqFile(SQFile *sqFile);
+EXPORT(sqInt) setInterpreter(struct VirtualMachine*anInterpreter);
+EXPORT(sqInt) shutdownModule(void);
+static int socketDescriptorFrom(sqInt sqSocketOop);
+static sqInt socketRecordSize(void);
+static SQSocket * socketValueOf(sqInt anSQSocketRecord);
+static sqInt stringFromCString(const char *aCString);
+static char * versionString(void);
+
+
+/*** Variables ***/
+
+#if !defined(SQUEAK_BUILTIN_PLUGIN)
+static void * (*arrayValueOf)(sqInt oop);
+static sqInt (*byteSizeOf)(sqInt oop);
+static sqInt (*classString)(void);
+static sqInt (*getThisSessionID)(void);
+static sqInt (*instantiateClassindexableSize)(sqInt classPointer, sqInt size);
+static sqInt (*isBytes)(sqInt oop);
+static sqInt (*nilObject)(void);
+static sqInt (*pop)(sqInt nItems);
+static sqInt (*popthenPush)(sqInt nItems, sqInt oop);
+static sqInt (*primitiveFail)(void);
+static sqInt (*pushInteger)(sqInt integerValue);
+static sqInt (*signalSemaphoreWithIndex)(sqInt semaIndex);
+static sqInt (*stackIntegerValue)(sqInt offset);
+static sqInt (*stackObjectValue)(sqInt offset);
+static sqInt (*stackValue)(sqInt offset);
+static sqInt (*trueObject)(void);
+#else /* !defined(SQUEAK_BUILTIN_PLUGIN) */
+extern void * arrayValueOf(sqInt oop);
+extern sqInt byteSizeOf(sqInt oop);
+extern sqInt classString(void);
+extern sqInt getThisSessionID(void);
+extern sqInt instantiateClassindexableSize(sqInt classPointer, sqInt size);
+extern sqInt isBytes(sqInt oop);
+extern sqInt nilObject(void);
+extern sqInt pop(sqInt nItems);
+extern sqInt popthenPush(sqInt nItems, sqInt oop);
+extern sqInt primitiveFail(void);
+extern sqInt pushInteger(sqInt integerValue);
+extern sqInt signalSemaphoreWithIndex(sqInt semaIndex);
+extern sqInt stackIntegerValue(sqInt offset);
+extern sqInt stackObjectValue(sqInt offset);
+extern sqInt stackValue(sqInt offset);
+extern sqInt trueObject(void);
+extern
+#endif
+struct VirtualMachine* interpreterProxy;
+static const char *moduleName =
+#ifdef SQUEAK_BUILTIN_PLUGIN
+ "AioPlugin VMConstruction-Plugins-AioPlugin-eem.17 (i)"
+#else
+ "AioPlugin VMConstruction-Plugins-AioPlugin-eem.17 (e)"
+#endif
+;
+
+
+
+/* This function is called to signal a Smalltalk Semaphore when an
+ asynchronous event is
+ detected. When translated to C, the name of this method is
+ aioForwardwithDataandFlags. The event handler is set up by
+ #primitiveAioHandle.
+ */
+
+static void
+aioForwardwithDataandFlags(int fd, void *data, int flags)
+{
+ int *pfd;
+ sqInt semaIndex;
+
+ pfd = data;
+ semaIndex = *pfd;
+ signalSemaphoreWithIndex(semaIndex);
+}
+
+
+/* Answer the OS file descriptor, an integer value, from a SQFile data
+ structure byte array, or answer -1 if unable to obtain the file descriptor
+ (probably due
+ to receiving an incorrect type of object as aFileHandle).
+ */
+/* return type should be int, but skip the declaration to permit inlining */
+
+static sqInt
+fileDescriptorFrom(sqInt aSQFileByteArray)
+{
+ if (!((((isBytes(aSQFileByteArray))
+ && ((byteSizeOf(aSQFileByteArray)) == (sizeof(SQFile))))
+ && ((getThisSessionID()) == (sessionIdentifierFromSqFile(arrayValueOf(aSQFileByteArray)))))
+ && (isNonNullSQFile(aSQFileByteArray)))) {
+ return -1;
+ }
+ return fileno(fileHandleFrom(aSQFileByteArray));
+}
+
+
+/* Answer a file handle from a SQFile structure. On most platforms, this
+ will be a (FILE *). On Win32, it is a HANDLE. */
+
+static FILEHANDLETYPE
+fileHandleFrom(sqInt sqFileStructByteArray)
+{
+ SQFile *sqFile;
+
+ sqFile = arrayValueOf(sqFileStructByteArray);
+ return sqFile->file;
+}
+
+
+/* Answer the size of a SQFile data structure in bytes. */
+
+static sqInt
+fileRecordSize(void)
+{
+ return sizeof(SQFile);
+}
+
+
+/* Return a pointer to the first byte of of the SQFile data structure file
+ record within
+ anSQFileRecord, which is expected to be a ByteArray of size
+ self>>fileRecordSize.
+ */
+
+static SQFile *
+fileValueOf(sqInt anSQFileRecord)
+{
+ return arrayValueOf(anSQFileRecord);
+}
+
+
+/* Note: This is hardcoded so it can be run from Squeak.
+ The module name is used for validating a module *after*
+ it is loaded to check if it does really contain the module
+ we're thinking it contains. This is important! */
+
+EXPORT(const char*)
+getModuleName(void)
+{
+ return moduleName;
+}
+
+static sqInt
+getThisSessionIdentifier(void)
+{
+ return getThisSessionID();
+}
+
+EXPORT(sqInt)
+initialiseModule(void)
+{
+ return 1;
+}
+
+
+/* Check for the common failure mode of a SQFile record with all zeros. */
+
+static sqInt
+isNonNullSQFile(sqInt objectPointer)
+{
+ unsigned idx;
+ unsigned char *sqFileBytes;
+
+ sqFileBytes = arrayValueOf(objectPointer);
+ idx = 0;
+ while (idx < (sizeof(SQFile))) {
+ if ((sqFileBytes[idx]) != 0) {
+ return 1;
+ }
+ idx += 1;
+ }
+ return 0;
+}
+
+
+/* Check for the common failure mode of a SQSocket record with all zeros. */
+
+static sqInt
+isNullSQSocket(sqInt objectPointer)
+{
+ sqInt idx;
+ unsigned char *sqSocketBytes;
+
+ sqSocketBytes = arrayValueOf(objectPointer);
+ idx = 0;
+ while (idx < (socketRecordSize())) {
+ if ((sqSocketBytes[idx]) != 0) {
+ return 0;
+ }
+ idx += 1;
+ }
+ return 1;
+}
+
+
+/* Answer true if objectPointer appears to be a valid SQFile ByteArray.
+ This check is appropriate if objectPointer has been passed as a parameter
+ to a primitive, and is expected to represent a valid file reference. */
+
+static sqInt
+isSQFileObject(sqInt objectPointer)
+{
+ return (((isBytes(objectPointer))
+ && ((byteSizeOf(objectPointer)) == (sizeof(SQFile))))
+ && ((getThisSessionID()) == (sessionIdentifierFromSqFile(arrayValueOf(objectPointer)))))
+ && (isNonNullSQFile(objectPointer));
+}
+
+
+/* Answer true if objectPointer appears to be a valid SQSocket ByteArray.
+ This check
+ is appropriate if objectPointer has been passed as a parameter to a
+ primitive, and
+ is expected to represent a valid socket reference.
+ */
+
+static sqInt
+isSQSocketObject(sqInt objectPointer)
+{
+ return ((isBytes(objectPointer))
+ && ((byteSizeOf(objectPointer)) == (socketRecordSize())))
+ && (!(isNullSQSocket(objectPointer)));
+}
+
+
+/* Answer true if the file session matches the current interpreter session
+ identifier.
+ */
+
+static sqInt
+isValidFileSession(sqInt objectPointer)
+{
+ return (getThisSessionID()) == (sessionIdentifierFromSqFile(arrayValueOf(objectPointer)));
+}
+
+
+/* The module with the given name was just unloaded.
+ Make sure we have no dangling references. */
+
+EXPORT(sqInt)
+moduleUnloaded(char *aModuleName)
+{
+}
+
+
+/* Definitively disable asynchronous event notification for a descriptor. The
+ parameter is an OS level integer file descriptor. */
+
+EXPORT(sqInt)
+primitiveAioDisable(void)
+{
+ sqInt fd;
+
+ if ((nilObject()) == (stackValue(0))) {
+ return primitiveFail();
+ }
+ fd = stackIntegerValue(0);
+ if (fd < 0) {
+ return primitiveFail();
+ }
+ aioDisable(fd);
+ pop(2);
+ pushInteger(fd);
+}
+
+
+/* Enable asynchronous notification for a descriptor. The first parameter is
+ an OS
+ level integer file descriptor. The second parameter is the index of a
+ Semaphore to
+ be notified, and the third parameter is a flag indicating that descriptor
+ represents an external object and should not be closed on termination of
+ aio handling. Answer
+ the semaphore index.
+ */
+
+EXPORT(sqInt)
+primitiveAioEnable(void)
+{
+ static int eventSemaphoreIndices[FD_SETSIZE];
+ sqInt externalObject;
+ sqInt fd;
+ sqInt flags;
+ sqInt semaIndex;
+
+ if ((nilObject()) == (stackValue(2))) {
+ return primitiveFail();
+ }
+ fd = stackIntegerValue(2);
+ if (fd < 0) {
+ return primitiveFail();
+ }
+ semaIndex = stackIntegerValue(1);
+ eventSemaphoreIndices[semaIndex] = semaIndex;
+ externalObject = stackObjectValue(0);
+ if (externalObject == (trueObject())) {
+ flags = AIO_EXT;
+ }
+ else {
+ flags = 0;
+ }
+ aioEnable(fd, &(eventSemaphoreIndices[semaIndex]), flags);
+ pop(4);
+ pushInteger(semaIndex);
+}
+
+
+/* Handle asynchronous event notification for a descriptor. The first
+ parameter is
+ an OS level integer file descriptor. The remaining three parameters are
+ Boolean flags representing the types of events for which notification is
+ being requested:
+ handle exceptions, handle for read, and handle for write.
+ Flags are defined in the aio.h source as:
+ AIO_X (1<<0) handle for exceptions
+ AIO_R (1<<1) handle for read
+ AIO_W (1<<2) handle for write */
+
+EXPORT(sqInt)
+primitiveAioHandle(void)
+{
+ sqInt exceptionWatch;
+ sqInt fd;
+ usqInt flags;
+ sqInt readWatch;
+ sqInt writeWatch;
+
+ if ((nilObject()) == (stackValue(3))) {
+ return primitiveFail();
+ }
+ fd = stackIntegerValue(3);
+ if (fd < 0) {
+ return primitiveFail();
+ }
+ exceptionWatch = stackObjectValue(2);
+ readWatch = stackObjectValue(1);
+ writeWatch = stackObjectValue(0);
+ flags = 0;
+ if (exceptionWatch == (trueObject())) {
+ flags = flags | (AIO_X);
+ }
+ if (readWatch == (trueObject())) {
+ flags = flags | (AIO_R);
+ }
+ if (writeWatch == (trueObject())) {
+ flags = flags | (AIO_W);
+ }
+ aioHandle(fd, aioForwardwithDataandFlags, flags);
+ pop(5);
+ pushInteger(flags);
+}
+
+
+/* Temporarily suspend asynchronous event notification for a descriptor. The
+ first parameter is an OS level integer file descriptor. The remaining
+ three parameters
+ are Boolean flags representing the types of events for which notification
+ is being
+ requested: handle exceptions, handle for read, and handle for write.
+ Flags are defined in the aio.h source as:
+ AIO_X (1<<0) handle for exceptions
+ AIO_R (1<<1) handle for read
+ AIO_W (1<<2) handle for write */
+
+EXPORT(sqInt)
+primitiveAioSuspend(void)
+{
+ sqInt exceptionWatch;
+ sqInt fd;
+ usqInt flags;
+ sqInt readWatch;
+ sqInt writeWatch;
+
+ if ((nilObject()) == (stackValue(3))) {
+ return primitiveFail();
+ }
+ fd = stackIntegerValue(3);
+ if (fd < 0) {
+ return primitiveFail();
+ }
+ exceptionWatch = stackObjectValue(2);
+ readWatch = stackObjectValue(1);
+ writeWatch = stackObjectValue(0);
+ flags = 0;
+ if (exceptionWatch == (trueObject())) {
+ flags = flags | (AIO_X);
+ }
+ if (readWatch == (trueObject())) {
+ flags = flags | (AIO_R);
+ }
+ if (writeWatch == (trueObject())) {
+ flags = flags | (AIO_W);
+ }
+ aioSuspend(fd, flags);
+ pop(5);
+ pushInteger(flags);
+}
+
+
+/* Answer a string containing the module name string for this plugin. */
+
+EXPORT(sqInt)
+primitiveModuleName(void)
+{
+ popthenPush(1, stringFromCString(getModuleName()));
+}
+
+
+/* Take a struct SQFile from the stack, and answer the value of its Unix file
+ number.
+ */
+
+EXPORT(sqInt)
+primitiveOSFileHandle(void)
+{
+ sqInt fileNo;
+ sqInt sqFileOop;
+
+ sqFileOop = stackValue(0);
+ if (!((((isBytes(sqFileOop))
+ && ((byteSizeOf(sqFileOop)) == (sizeof(SQFile))))
+ && ((getThisSessionID()) == (sessionIdentifierFromSqFile(arrayValueOf(sqFileOop)))))
+ && (isNonNullSQFile(sqFileOop)))) {
+ return primitiveFail();
+ }
+ /* begin fileDescriptorFrom: */
+ if (!((((isBytes(sqFileOop))
+ && ((byteSizeOf(sqFileOop)) == (sizeof(SQFile))))
+ && ((getThisSessionID()) == (sessionIdentifierFromSqFile(arrayValueOf(sqFileOop)))))
+ && (isNonNullSQFile(sqFileOop)))) {
+ fileNo = -1;
+ goto l1;
+ }
+ fileNo = fileno(fileHandleFrom(sqFileOop));
+l1: /* end fileDescriptorFrom: */;
+ pop(2);
+ pushInteger(fileNo);
+}
+
+
+/* Take a struct SQSocket from the stack, and answer the value of its Unix
+ file number.
+ */
+
+EXPORT(sqInt)
+primitiveOSSocketHandle(void)
+{
+ int fileNo;
+ sqInt sqSocketOop;
+
+ sqSocketOop = stackValue(0);
+ if (!(((isBytes(sqSocketOop))
+ && ((byteSizeOf(sqSocketOop)) == (socketRecordSize())))
+ && (!(isNullSQSocket(sqSocketOop))))) {
+ return primitiveFail();
+ }
+ fileNo = socketDescriptorFrom(sqSocketOop);
+ if (fileNo < 0) {
+ return primitiveFail();
+ }
+ pop(2);
+ pushInteger(fileNo);
+}
+
+
+/* Answer a string containing the version string for this plugin. */
+
+EXPORT(sqInt)
+primitiveVersionString(void)
+{
+ popthenPush(1, stringFromCString(versionString()));
+}
+
+
+/* Answer the session identifier from a SQFile structure. For a valid file
+ reference, this identifier will match the session identifier supplied by
+ the interpreter. */
+
+static SESSIONIDENTIFIERTYPE
+sessionIdentifierFromSqFile(SQFile *sqFile)
+{
+ return sqFile->sessionID;
+}
+
+
+/* Note: This is coded so that it can be run in Squeak. */
+
+EXPORT(sqInt)
+setInterpreter(struct VirtualMachine*anInterpreter)
+{
+ sqInt ok;
+
@@ Diff output truncated at 50000 characters. @@
More information about the Vm-dev
mailing list