[Vm-dev] [commit][2631] Fix stackPage headroom calculation in CoInterpreter.

commits at squeakvm.org commits at squeakvm.org
Wed Dec 12 02:04:48 UTC 2012


Revision: 2631
Author:   eliot
Date:     2012-12-11 18:04:46 -0800 (Tue, 11 Dec 2012)
Log Message:
-----------
Fix stackPage headroom calculation in CoInterpreter.  Was getting
things backward.  This increases the stack page headroom by 62%
from 1564 bytes to 2532 bytes.  Shootout benchmarks unchanged,
so reduction in frames per page is not an issue for typical code.

This should result in fewer crashes on linux where the dynamic
linker, if it kicked in during a signal handler, could cause a deep
call chain at interrupt time and trample the start of the adjoining
stack page.

Merge LargeInteger primitive fixes from VMMaker-dtl.286.

Change generation of plugin code so that internal plugins call VM
routines directly and external plugins call through their own local
copies of the function pointers in InterpreterProxy.  External plugins
copy the InterpreterProxy functions to their local copies in
setInterpreter:.

Change implementations of stObject:at:put: to return their value, to
match the declaration in InterpreterProxy.

Streamline ObjectMemory>>instantiateClass:indexableSize: (hdrSize
and header3 change together).

Optimize the debug VM by making startOfMemory a macro that
answers heapBase instead of a method.

Improve stack page printing, and make stack trace printing more
robust (findClass/SelectorOfMethod:forReceiver:).

Make temporary:in:put: et al answer their values. For stObject:at:put:.

Make jumpTable size err message more explanatory.

Rename misnamed internameIsMutable: and internalIsImmutable:
to isOopMutable: and isOopImmutable:.  Affects sqVirtualMachine.c,
but only part of api used in Newspeak VMs.

Modified Paths:
--------------
    branches/Cog/nscogbuild/cygwinbuild/sqNamedPrims.h
    branches/Cog/nscogbuild/unixbuild/astbld/mvm
    branches/Cog/nscogbuild/unixbuild/bld/mvm
    branches/Cog/nscogbuild/unixbuild/dbgbld/mvm
    branches/Cog/nscogsrc/plugins/AsynchFilePlugin/AsynchFilePlugin.c
    branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c
    branches/Cog/nscogsrc/plugins/BMPReadWriterPlugin/BMPReadWriterPlugin.c
    branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c
    branches/Cog/nscogsrc/plugins/DSAPrims/DSAPrims.c
    branches/Cog/nscogsrc/plugins/DropPlugin/DropPlugin.c
    branches/Cog/nscogsrc/plugins/FileCopyPlugin/FileCopyPlugin.c
    branches/Cog/nscogsrc/plugins/FilePlugin/FilePlugin.c
    branches/Cog/nscogsrc/plugins/FloatArrayPlugin/FloatArrayPlugin.c
    branches/Cog/nscogsrc/plugins/FloatMathPlugin/FloatMathPlugin.c
    branches/Cog/nscogsrc/plugins/IA32ABI/IA32ABI.c
    branches/Cog/nscogsrc/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c
    branches/Cog/nscogsrc/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c
    branches/Cog/nscogsrc/plugins/LargeIntegers/LargeIntegers.c
    branches/Cog/nscogsrc/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c
    branches/Cog/nscogsrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
    branches/Cog/nscogsrc/plugins/RePlugin/RePlugin.c
    branches/Cog/nscogsrc/plugins/SecurityPlugin/SecurityPlugin.c
    branches/Cog/nscogsrc/plugins/SocketPlugin/SocketPlugin.c
    branches/Cog/nscogsrc/plugins/SoundPlugin/SoundPlugin.c
    branches/Cog/nscogsrc/plugins/UUIDPlugin/UUIDPlugin.c
    branches/Cog/nscogsrc/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c
    branches/Cog/nscogsrc/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c
    branches/Cog/nscogsrc/plugins/Win32OSProcessPlugin/Win32OSProcessPlugin.c
    branches/Cog/nscogsrc/plugins/ZipPlugin/ZipPlugin.c
    branches/Cog/nscogsrc/vm/cogit.c
    branches/Cog/nscogsrc/vm/cogit.h
    branches/Cog/nscogsrc/vm/cogmethod.h
    branches/Cog/nscogsrc/vm/cointerp.c
    branches/Cog/nscogsrc/vm/cointerp.h
    branches/Cog/nscogsrc/vm/exampleSqNamedPrims.h
    branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
    branches/Cog/nscogsrc/vm/interp.h
    branches/Cog/nscogsrc/vm/vmCallback.h
    branches/Cog/platforms/Cross/vm/sqVirtualMachine.c
    branches/Cog/platforms/Cross/vm/sqVirtualMachine.h
    branches/Cog/platforms/win32/vm/sqGnu.h
    branches/Cog/src/examplePlugins.ext
    branches/Cog/src/plugins/ADPCMCodecPlugin/ADPCMCodecPlugin.c
    branches/Cog/src/plugins/AsynchFilePlugin/AsynchFilePlugin.c
    branches/Cog/src/plugins/B2DPlugin/B2DPlugin.c
    branches/Cog/src/plugins/B3DAcceleratorPlugin/B3DAcceleratorPlugin.c
    branches/Cog/src/plugins/BMPReadWriterPlugin/BMPReadWriterPlugin.c
    branches/Cog/src/plugins/BitBltPlugin/BitBltPlugin.c
    branches/Cog/src/plugins/BochsIA32Plugin/BochsIA32Plugin.c
    branches/Cog/src/plugins/CroquetPlugin/CroquetPlugin.c
    branches/Cog/src/plugins/DSAPrims/DSAPrims.c
    branches/Cog/src/plugins/DropPlugin/DropPlugin.c
    branches/Cog/src/plugins/FFTPlugin/FFTPlugin.c
    branches/Cog/src/plugins/FT2Plugin/FT2Plugin.c
    branches/Cog/src/plugins/FileCopyPlugin/FileCopyPlugin.c
    branches/Cog/src/plugins/FilePlugin/FilePlugin.c
    branches/Cog/src/plugins/FloatArrayPlugin/FloatArrayPlugin.c
    branches/Cog/src/plugins/FloatMathPlugin/FloatMathPlugin.c
    branches/Cog/src/plugins/GeniePlugin/GeniePlugin.c
    branches/Cog/src/plugins/HostWindowPlugin/HostWindowPlugin.c
    branches/Cog/src/plugins/IA32ABI/IA32ABI.c
    branches/Cog/src/plugins/InternetConfigPlugin/InternetConfigPlugin.c
    branches/Cog/src/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c
    branches/Cog/src/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c
    branches/Cog/src/plugins/JoystickTabletPlugin/JoystickTabletPlugin.c
    branches/Cog/src/plugins/Klatt/Klatt.c
    branches/Cog/src/plugins/LargeIntegers/LargeIntegers.c
    branches/Cog/src/plugins/LocalePlugin/LocalePlugin.c
    branches/Cog/src/plugins/MIDIPlugin/MIDIPlugin.c
    branches/Cog/src/plugins/MacMenubarPlugin/MacMenubarPlugin.c
    branches/Cog/src/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c
    branches/Cog/src/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
    branches/Cog/src/plugins/Mpeg3Plugin/Mpeg3Plugin.c
    branches/Cog/src/plugins/QuicktimePlugin/QuicktimePlugin.c
    branches/Cog/src/plugins/RePlugin/RePlugin.c
    branches/Cog/src/plugins/SecurityPlugin/SecurityPlugin.c
    branches/Cog/src/plugins/SerialPlugin/SerialPlugin.c
    branches/Cog/src/plugins/SocketPlugin/SocketPlugin.c
    branches/Cog/src/plugins/SoundCodecPrims/SoundCodecPrims.c
    branches/Cog/src/plugins/SoundGenerationPlugin/SoundGenerationPlugin.c
    branches/Cog/src/plugins/SoundPlugin/SoundPlugin.c
    branches/Cog/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c
    branches/Cog/src/plugins/StarSqueakPlugin/StarSqueakPlugin.c
    branches/Cog/src/plugins/UUIDPlugin/UUIDPlugin.c
    branches/Cog/src/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c
    branches/Cog/src/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c
    branches/Cog/src/plugins/Win32OSProcessPlugin/Win32OSProcessPlugin.c
    branches/Cog/src/plugins/ZipPlugin/ZipPlugin.c
    branches/Cog/src/vm/cogit.c
    branches/Cog/src/vm/cogit.h
    branches/Cog/src/vm/cogmethod.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/exampleSqNamedPrims.h
    branches/Cog/src/vm/gcc3x-cointerp.c
    branches/Cog/src/vm/gcc3x-cointerpmt.c
    branches/Cog/src/vm/interp.h
    branches/Cog/src/vm/vmCallback.h
    branches/Cog/unixbuild/abld/mvm
    branches/Cog/unixbuild/bld/mvm
    branches/Cog/unixbuild/dbld/mvm
    branches/Cog/unixbuild/mtbld/mvm

Added Paths:
-----------
    branches/Cog/scripts/neutronbombprims

Property Changed:
----------------
    branches/Cog/platforms/Cross/vm/sqSCCSVersion.h

Modified: branches/Cog/nscogbuild/cygwinbuild/sqNamedPrims.h
===================================================================
--- branches/Cog/nscogbuild/cygwinbuild/sqNamedPrims.h	2012-12-04 17:53:23 UTC (rev 2630)
+++ branches/Cog/nscogbuild/cygwinbuild/sqNamedPrims.h	2012-12-12 02:04:46 UTC (rev 2631)
@@ -1,4 +1,4 @@
-/* Automatically generated on Jun 27 2011, 17:03:45 */
+/* Automatically generated on Dec  6 2012, 10:04:49 */
 
 extern sqExport vm_exports[];
 extern sqExport os_exports[];

Modified: branches/Cog/nscogbuild/unixbuild/astbld/mvm
===================================================================
--- branches/Cog/nscogbuild/unixbuild/astbld/mvm	2012-12-04 17:53:23 UTC (rev 2630)
+++ branches/Cog/nscogbuild/unixbuild/astbld/mvm	2012-12-12 02:04:46 UTC (rev 2631)
@@ -8,7 +8,11 @@
 n|no|N|NO)	echo "ok but this isn't safe!!";;
 *)			make reallyclean
 esac
-test -f config.h || ../../../platforms/unix/config/configure --with-src=nscogsrc --without-vm-display-fbdev --without-npsqueak CFLAGS="-g $OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DMULTIPLEBYTECODESETS=1 -DDEBUGVM=0 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" LIBS="-lpthread -luuid"
+test -f config.h || ../../../platforms/unix/config/configure --with-src=nscogsrc \
+	--without-vm-display-fbdev --without-npsqueak \
+	CFLAGS="-g $OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DMULTIPLEBYTECODESETS=1 -DDEBUGVM=0 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" \
+	LIBS="-lpthread -luuid" \
+	LDFLAGS=-Wl,-z,now
 ../../../scripts/nukeversion
 rm -rf ../../../$INSTALLDIR
 # would prefer make install prefix=`readlink -f \`pwd\`/../../../$INSTALLDIR`

Modified: branches/Cog/nscogbuild/unixbuild/bld/mvm
===================================================================
--- branches/Cog/nscogbuild/unixbuild/bld/mvm	2012-12-04 17:53:23 UTC (rev 2630)
+++ branches/Cog/nscogbuild/unixbuild/bld/mvm	2012-12-12 02:04:46 UTC (rev 2631)
@@ -12,7 +12,11 @@
 n|no|N|NO)	echo "ok but this isn't safe!!";;
 *)			make reallyclean
 esac
-test -f config.h || ../../../platforms/unix/config/configure --with-src=nscogsrc --without-vm-display-fbdev --without-npsqueak CFLAGS="-g $OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DMULTIPLEBYTECODESETS=1 -DDEBUGVM=0" LIBS="-lpthread -luuid"
+test -f config.h || ../../../platforms/unix/config/configure --with-src=nscogsrc \
+	--without-vm-display-fbdev --without-npsqueak \
+	CFLAGS="-g $OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DMULTIPLEBYTECODESETS=1 -DDEBUGVM=0" \
+	LIBS="-lpthread -luuid" \
+	LDFLAGS=-Wl,-z,now
 ../../../scripts/nukeversion
 rm -rf ../../../$INSTALLDIR
 # would prefer make install prefix=`readlink -f \`pwd\`/../../../$INSTALLDIR`

Modified: branches/Cog/nscogbuild/unixbuild/dbgbld/mvm
===================================================================
--- branches/Cog/nscogbuild/unixbuild/dbgbld/mvm	2012-12-04 17:53:23 UTC (rev 2630)
+++ branches/Cog/nscogbuild/unixbuild/dbgbld/mvm	2012-12-12 02:04:46 UTC (rev 2631)
@@ -8,7 +8,11 @@
 n|no|N|NO)	echo "ok but this isn't safe!!";;
 *)			make reallyclean
 esac
-test -f config.h || ../../../platforms/unix/config/configure --with-src=nscogsrc --without-vm-display-fbdev --without-npsqueak CFLAGS="-g $OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DMULTIPLEBYTECODESETS=1 -DDEBUGVM=1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" LIBS="-lpthread -luuid"
+test -f config.h || ../../../platforms/unix/config/configure --with-src=nscogsrc \
+	--without-vm-display-fbdev --without-npsqueak \
+	CFLAGS="-g $OPT -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DMULTIPLEBYTECODESETS=1 -DDEBUGVM=1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" \
+	LIBS="-lpthread -luuid" \
+	LDFLAGS=-Wl,-z,now
 ../../../scripts/nukeversion
 rm -rf ../../../$INSTALLDIR
 # would prefer make install prefix=`readlink -f \`pwd\`/../../../$INSTALLDIR`

Modified: branches/Cog/nscogsrc/plugins/AsynchFilePlugin/AsynchFilePlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/AsynchFilePlugin/AsynchFilePlugin.c	2012-12-04 17:53:23 UTC (rev 2630)
+++ branches/Cog/nscogsrc/plugins/AsynchFilePlugin/AsynchFilePlugin.c	2012-12-12 02:04:46 UTC (rev 2631)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.222 uuid: 9255d122-7216-4700-8ead-493416ce0cf6
+	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.232 uuid: 9ecffa1b-c204-4dbd-b148-79e209e6470a
    from
-	AsynchFilePlugin VMMaker.oscog-eem.222 uuid: 9255d122-7216-4700-8ead-493416ce0cf6
+	AsynchFilePlugin VMMaker.oscog-eem.232 uuid: 9ecffa1b-c204-4dbd-b148-79e209e6470a
  */
-static char __buildInfo[] = "AsynchFilePlugin VMMaker.oscog-eem.222 uuid: 9255d122-7216-4700-8ead-493416ce0cf6 " __DATE__ ;
+static char __buildInfo[] = "AsynchFilePlugin VMMaker.oscog-eem.232 uuid: 9ecffa1b-c204-4dbd-b148-79e209e6470a " __DATE__ ;
 
 
 
@@ -12,6 +12,11 @@
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
 
 /* Default EXPORT macro that does nothing (see comment in sq.h): */
 #define EXPORT(returnType) returnType
@@ -35,6 +40,7 @@
 
 #include "AsynchFilePlugin.h"
 #include "sqMemoryAccess.h"
+#include "sqMemoryAccess.h"
 
 
 /*** Constants ***/
@@ -62,15 +68,51 @@
 
 /*** Variables ***/
 
-#ifdef SQUEAK_BUILTIN_PLUGIN
+#if !defined(SQUEAK_BUILTIN_PLUGIN)
+static sqInt (*booleanValueOf)(sqInt obj);
+static sqInt (*classByteArray)(void);
+static sqInt (*failed)(void);
+static void * (*firstIndexableField)(sqInt oop);
+static sqInt (*instantiateClassindexableSize)(sqInt classPointer, sqInt size);
+static sqInt (*integerObjectOf)(sqInt value);
+static void * (*ioLoadFunctionFrom)(char *functionName, char *moduleName);
+static sqInt (*isBytes)(sqInt oop);
+static sqInt (*isIntegerObject)(sqInt objectPointer);
+static sqInt (*isWords)(sqInt oop);
+static sqInt (*pop)(sqInt nItems);
+static sqInt (*popthenPush)(sqInt nItems, sqInt oop);
+static sqInt (*primitiveFail)(void);
+static sqInt (*slotSizeOf)(sqInt oop);
+static sqInt (*stackIntegerValue)(sqInt offset);
+static sqInt (*stackValue)(sqInt offset);
+static sqInt (*success)(sqInt aBoolean);
+#else /* !defined(SQUEAK_BUILTIN_PLUGIN) */
+extern sqInt booleanValueOf(sqInt obj);
+extern sqInt classByteArray(void);
+extern sqInt failed(void);
+extern void * firstIndexableField(sqInt oop);
+extern sqInt instantiateClassindexableSize(sqInt classPointer, sqInt size);
+extern sqInt integerObjectOf(sqInt value);
+extern void * ioLoadFunctionFrom(char *functionName, char *moduleName);
+extern sqInt isBytes(sqInt oop);
+extern sqInt isIntegerObject(sqInt objectPointer);
+extern sqInt isWords(sqInt oop);
+extern sqInt pop(sqInt nItems);
+extern sqInt popthenPush(sqInt nItems, sqInt oop);
+extern sqInt primitiveFail(void);
+extern sqInt slotSizeOf(sqInt oop);
+extern sqInt stackIntegerValue(sqInt offset);
+extern sqInt stackValue(sqInt offset);
+extern sqInt success(sqInt aBoolean);
+
 extern
 #endif
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"AsynchFilePlugin VMMaker.oscog-eem.222 (i)"
+	"AsynchFilePlugin VMMaker.oscog-eem.232 (i)"
 #else
-	"AsynchFilePlugin VMMaker.oscog-eem.222 (e)"
+	"AsynchFilePlugin VMMaker.oscog-eem.232 (e)"
 #endif
 ;
 static void * sCOAFfn;
@@ -84,10 +126,10 @@
 static AsyncFile *
 asyncFileValueOf(sqInt oop)
 {
-	interpreterProxy->success((!(interpreterProxy->isIntegerObject(oop)))
-	 && ((interpreterProxy->isBytes(oop))
-	 && ((interpreterProxy->slotSizeOf(oop)) == (sizeof(AsyncFile)))));
-	if (interpreterProxy->failed()) {
+	success((!(isIntegerObject(oop)))
+	 && ((isBytes(oop))
+	 && ((slotSizeOf(oop)) == (sizeof(AsyncFile)))));
+	if (failed()) {
 		return null;
 	}
 	return (AsyncFile *) (oop + 4);
@@ -127,7 +169,7 @@
 EXPORT(sqInt)
 initialiseModule(void)
 {
-	sCOAFfn = interpreterProxy->ioLoadFunctionFrom("secCanOpenAsyncFileOfSizeWritable", "SecurityPlugin");
+	sCOAFfn = ioLoadFunctionFrom("secCanOpenAsyncFileOfSizeWritable", "SecurityPlugin");
 	return asyncFileInit();
 }
 
@@ -159,16 +201,16 @@
 	AsyncFile *f;
 	sqInt fh;
 
-	fh = interpreterProxy->stackValue(0);
-	if (interpreterProxy->failed()) {
+	fh = stackValue(0);
+	if (failed()) {
 		return null;
 	}
 	f = asyncFileValueOf(fh);
 	asyncFileClose(f);
-	if (interpreterProxy->failed()) {
+	if (failed()) {
 		return null;
 	}
-	interpreterProxy->pop(1);
+	pop(1);
 	return null;
 }
 
@@ -183,34 +225,34 @@
 	sqInt semaIndex;
 	sqInt writeFlag;
 
-	interpreterProxy->success(interpreterProxy->isBytes(interpreterProxy->stackValue(2)));
-	fileName = ((char *) (interpreterProxy->firstIndexableField(interpreterProxy->stackValue(2))));
-	writeFlag = interpreterProxy->booleanValueOf(interpreterProxy->stackValue(1));
-	semaIndex = interpreterProxy->stackIntegerValue(0);
-	if (interpreterProxy->failed()) {
+	success(isBytes(stackValue(2)));
+	fileName = ((char *) (firstIndexableField(stackValue(2))));
+	writeFlag = booleanValueOf(stackValue(1));
+	semaIndex = stackIntegerValue(0);
+	if (failed()) {
 		return null;
 	}
 
 	/* If the security plugin can be loaded, use it to check for permission.
 	   If not, assume it's ok */
 
-	fileNameSize = interpreterProxy->slotSizeOf(((int) fileName) - 4);
+	fileNameSize = slotSizeOf(((int) fileName) - 4);
 	if (sCOAFfn != 0) {
 		okToOpen =  ((sqInt (*) (char *, sqInt, sqInt)) sCOAFfn)(fileName, fileNameSize, writeFlag);
 		if (!okToOpen) {
-			interpreterProxy->primitiveFail();
+			primitiveFail();
 			return null;
 		}
 	}
-	fOop = interpreterProxy->instantiateClassindexableSize(interpreterProxy->classByteArray(), sizeof(AsyncFile));
+	fOop = instantiateClassindexableSize(classByteArray(), sizeof(AsyncFile));
 	f = asyncFileValueOf(fOop);
-	if (!(interpreterProxy->failed())) {
+	if (!(failed())) {
 		asyncFileOpen(f, (int)fileName, fileNameSize, writeFlag, semaIndex);
 	}
-	if (interpreterProxy->failed()) {
+	if (failed()) {
 		return null;
 	}
-	interpreterProxy->popthenPush(4, fOop);
+	popthenPush(4, fOop);
 	return null;
 }
 
@@ -229,11 +271,11 @@
 	sqInt startIndex;
 	sqInt _return_value;
 
-	fhandle = interpreterProxy->stackValue(3);
-	buffer = interpreterProxy->stackValue(2);
-	start = interpreterProxy->stackIntegerValue(1);
-	num = interpreterProxy->stackIntegerValue(0);
-	if (interpreterProxy->failed()) {
+	fhandle = stackValue(3);
+	buffer = stackValue(2);
+	start = stackIntegerValue(1);
+	num = stackIntegerValue(0);
+	if (failed()) {
 		return null;
 	}
 	f = asyncFileValueOf(fhandle);
@@ -242,8 +284,8 @@
 
 	/* in bytes or words */
 
-	bufferSize = interpreterProxy->slotSizeOf(buffer);
-	if (interpreterProxy->isWords(buffer)) {
+	bufferSize = slotSizeOf(buffer);
+	if (isWords(buffer)) {
 
 		/* covert word counts to byte counts */
 
@@ -251,20 +293,20 @@
 		startIndex = ((startIndex - 1) * 4) + 1;
 		bufferSize = bufferSize * 4;
 	}
-	interpreterProxy->success((startIndex >= 1)
+	success((startIndex >= 1)
 	 && (((startIndex + count) - 1) <= bufferSize));
 
 	/* adjust for zero-origin indexing */
 
-	bufferPtr = ((((int) (interpreterProxy->firstIndexableField(buffer)))) + startIndex) - 1;
-	if (!(interpreterProxy->failed())) {
+	bufferPtr = ((((int) (firstIndexableField(buffer)))) + startIndex) - 1;
+	if (!(failed())) {
 		r = asyncFileReadResult(f, bufferPtr, count);
 	}
-	_return_value = interpreterProxy->integerObjectOf(r);
-	if (interpreterProxy->failed()) {
+	_return_value = integerObjectOf(r);
+	if (failed()) {
 		return null;
 	}
-	interpreterProxy->popthenPush(5, _return_value);
+	popthenPush(5, _return_value);
 	return null;
 }
 
@@ -276,18 +318,18 @@
 	sqInt fHandle;
 	sqInt fPosition;
 
-	fHandle = interpreterProxy->stackValue(2);
-	fPosition = interpreterProxy->stackIntegerValue(1);
-	count = interpreterProxy->stackIntegerValue(0);
-	if (interpreterProxy->failed()) {
+	fHandle = stackValue(2);
+	fPosition = stackIntegerValue(1);
+	count = stackIntegerValue(0);
+	if (failed()) {
 		return null;
 	}
 	f = asyncFileValueOf(fHandle);
 	asyncFileReadStart(f, fPosition, count);
-	if (interpreterProxy->failed()) {
+	if (failed()) {
 		return null;
 	}
-	interpreterProxy->pop(3);
+	pop(3);
 	return null;
 }
 
@@ -299,17 +341,17 @@
 	sqInt r;
 	sqInt _return_value;
 
-	fHandle = interpreterProxy->stackValue(0);
-	if (interpreterProxy->failed()) {
+	fHandle = stackValue(0);
+	if (failed()) {
 		return null;
 	}
 	f = asyncFileValueOf(fHandle);
 	r =  asyncFileWriteResult(f);
-	_return_value = interpreterProxy->integerObjectOf(r);
-	if (interpreterProxy->failed()) {
+	_return_value = integerObjectOf(r);
+	if (failed()) {
 		return null;
 	}
-	interpreterProxy->popthenPush(2, _return_value);
+	popthenPush(2, _return_value);
 	return null;
 }
 
@@ -327,16 +369,16 @@
 	sqInt start;
 	sqInt startIndex;
 
-	fHandle = interpreterProxy->stackValue(4);
-	fPosition = interpreterProxy->stackIntegerValue(3);
-	buffer = interpreterProxy->stackValue(2);
-	start = interpreterProxy->stackIntegerValue(1);
-	num = interpreterProxy->stackIntegerValue(0);
-	if (interpreterProxy->failed()) {
+	fHandle = stackValue(4);
+	fPosition = stackIntegerValue(3);
+	buffer = stackValue(2);
+	start = stackIntegerValue(1);
+	num = stackIntegerValue(0);
+	if (failed()) {
 		return null;
 	}
 	f = asyncFileValueOf(fHandle);
-	if (interpreterProxy->failed()) {
+	if (failed()) {
 		return null;
 	}
 	count = num;
@@ -344,8 +386,8 @@
 
 	/* in bytes or words */
 
-	bufferSize = interpreterProxy->slotSizeOf(buffer);
-	if (interpreterProxy->isWords(buffer)) {
+	bufferSize = slotSizeOf(buffer);
+	if (isWords(buffer)) {
 
 		/* covert word counts to byte counts */
 
@@ -353,24 +395,24 @@
 		startIndex = ((startIndex - 1) * 4) + 1;
 		bufferSize = bufferSize * 4;
 	}
-	interpreterProxy->success((startIndex >= 1)
+	success((startIndex >= 1)
 	 && (((startIndex + count) - 1) <= bufferSize));
 
 	/* adjust for zero-origin indexing */
 
-	bufferPtr = ((((int) (interpreterProxy->firstIndexableField(buffer)))) + startIndex) - 1;
-	if (!(interpreterProxy->failed())) {
+	bufferPtr = ((((int) (firstIndexableField(buffer)))) + startIndex) - 1;
+	if (!(failed())) {
 		asyncFileWriteStart(f, fPosition, bufferPtr, count);
 	}
-	if (interpreterProxy->failed()) {
+	if (failed()) {
 		return null;
 	}
-	interpreterProxy->pop(5);
+	pop(5);
 	return null;
 }
 
 
-/*	Note: This is coded so that is can be run from Squeak. */
+/*	Note: This is coded so that it can be run in Squeak. */
 
 EXPORT(sqInt)
 setInterpreter(struct VirtualMachine*anInterpreter)
@@ -378,11 +420,30 @@
 	sqInt ok;
 
 	interpreterProxy = anInterpreter;
-	ok = interpreterProxy->majorVersion() == VM_PROXY_MAJOR;
-	if (ok == 0) {
-		return 0;
+	ok = ((interpreterProxy->majorVersion()) == (VM_PROXY_MAJOR))
+	 && ((interpreterProxy->minorVersion()) >= (VM_PROXY_MINOR));
+	if (ok) {
+		
+#if !defined(SQUEAK_BUILTIN_PLUGIN)
+		booleanValueOf = interpreterProxy->booleanValueOf;
+		classByteArray = interpreterProxy->classByteArray;
+		failed = interpreterProxy->failed;
+		firstIndexableField = interpreterProxy->firstIndexableField;
+		instantiateClassindexableSize = interpreterProxy->instantiateClassindexableSize;
+		integerObjectOf = interpreterProxy->integerObjectOf;
+		ioLoadFunctionFrom = interpreterProxy->ioLoadFunctionFrom;
+		isBytes = interpreterProxy->isBytes;
+		isIntegerObject = interpreterProxy->isIntegerObject;
+		isWords = interpreterProxy->isWords;
+		pop = interpreterProxy->pop;
+		popthenPush = interpreterProxy->popthenPush;
+		primitiveFail = interpreterProxy->primitiveFail;
+		slotSizeOf = interpreterProxy->slotSizeOf;
+		stackIntegerValue = interpreterProxy->stackIntegerValue;
+		stackValue = interpreterProxy->stackValue;
+		success = interpreterProxy->success;
+#endif /* !defined(SQUEAK_BUILTIN_PLUGIN) */;
 	}
-	ok = interpreterProxy->minorVersion() >= VM_PROXY_MINOR;
 	return ok;
 }
 

Modified: branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c	2012-12-04 17:53:23 UTC (rev 2630)
+++ branches/Cog/nscogsrc/plugins/B2DPlugin/B2DPlugin.c	2012-12-12 02:04:46 UTC (rev 2631)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.222 uuid: 9255d122-7216-4700-8ead-493416ce0cf6
+	VMPluginCodeGenerator VMMaker.oscog-eem.232 uuid: 9ecffa1b-c204-4dbd-b148-79e209e6470a
    from
-	BalloonEnginePlugin VMMaker.oscog-eem.222 uuid: 9255d122-7216-4700-8ead-493416ce0cf6
+	BalloonEnginePlugin VMMaker.oscog-eem.232 uuid: 9ecffa1b-c204-4dbd-b148-79e209e6470a
  */
-static char __buildInfo[] = "BalloonEnginePlugin VMMaker.oscog-eem.222 uuid: 9255d122-7216-4700-8ead-493416ce0cf6 " __DATE__ ;
+static char __buildInfo[] = "BalloonEnginePlugin VMMaker.oscog-eem.232 uuid: 9ecffa1b-c204-4dbd-b148-79e209e6470a " __DATE__ ;
 
 
 
@@ -12,6 +12,11 @@
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
 
 /* Default EXPORT macro that does nothing (see comment in sq.h): */
 #define EXPORT(returnType) returnType
@@ -34,6 +39,7 @@
 #endif
 
 #include "sqMemoryAccess.h"
+#include "sqMemoryAccess.h"
 
 
 /*** Constants ***/
@@ -746,16 +752,98 @@
 static sqInt geProfileTime;
 static int* getBuffer;
 
-#ifdef SQUEAK_BUILTIN_PLUGIN
+#if !defined(SQUEAK_BUILTIN_PLUGIN)
+static sqInt (*booleanValueOf)(sqInt obj);
+static sqInt (*byteSizeOf)(sqInt oop);
+static sqInt (*classBitmap)(void);
+static sqInt (*classPoint)(void);
+static sqInt (*failed)(void);
+static sqInt (*fetchClassOf)(sqInt oop);
+static sqInt (*fetchIntegerofObject)(sqInt fieldIndex, sqInt objectPointer);
+static sqInt (*fetchPointerofObject)(sqInt index, sqInt oop);
+static void * (*firstIndexableField)(sqInt oop);
+static double (*floatValueOf)(sqInt oop);
+static sqInt (*integerValueOf)(sqInt oop);
+static void * (*ioLoadFunctionFrom)(char *functionName, char *moduleName);
+static sqInt (*ioMicroMSecs)(void);
+static sqInt (*isArray)(sqInt oop);
+static sqInt (*isBytes)(sqInt oop);
+static sqInt (*isFloatObject)(sqInt oop);
+static sqInt (*isIntegerObject)(sqInt objectPointer);
+static sqInt (*isPointers)(sqInt oop);
+static sqInt (*isWords)(sqInt oop);
+static sqInt (*makePointwithxValueyValue)(sqInt xValue, sqInt yValue);
+static sqInt (*methodArgumentCount)(void);
+static sqInt (*nilObject)(void);
+static sqInt (*pop)(sqInt nItems);
+static sqInt (*popthenPush)(sqInt nItems, sqInt oop);
+static sqInt (*popRemappableOop)(void);
+static sqInt (*positive32BitIntegerFor)(sqInt integerValue);
+static sqInt (*positive32BitValueOf)(sqInt oop);
+static sqInt (*primitiveFail)(void);
+static sqInt (*primitiveFailFor)(sqInt reasonCode);
+static sqInt (*push)(sqInt object);
+static sqInt (*pushBool)(sqInt trueOrFalse);
+static sqInt (*pushInteger)(sqInt integerValue);
+static sqInt (*pushRemappableOop)(sqInt oop);
+static sqInt (*slotSizeOf)(sqInt oop);
+static sqInt (*stackIntegerValue)(sqInt offset);
+static sqInt (*stackObjectValue)(sqInt offset);
+static sqInt (*stackValue)(sqInt offset);
+static sqInt (*storeIntegerofObjectwithValue)(sqInt index, sqInt oop, sqInt integer);
+static sqInt (*storePointerofObjectwithValue)(sqInt index, sqInt oop, sqInt valuePointer);
+static sqInt (*topRemappableOop)(void);
+#else /* !defined(SQUEAK_BUILTIN_PLUGIN) */
+extern sqInt booleanValueOf(sqInt obj);
+extern sqInt byteSizeOf(sqInt oop);
+extern sqInt classBitmap(void);
+extern sqInt classPoint(void);
+extern sqInt failed(void);
+extern sqInt fetchClassOf(sqInt oop);
+extern sqInt fetchIntegerofObject(sqInt fieldIndex, sqInt objectPointer);
+extern sqInt fetchPointerofObject(sqInt index, sqInt oop);
+extern void * firstIndexableField(sqInt oop);
+extern double floatValueOf(sqInt oop);
+extern sqInt integerValueOf(sqInt oop);
+extern void * ioLoadFunctionFrom(char *functionName, char *moduleName);
+extern sqInt ioMicroMSecs(void);
+extern sqInt isArray(sqInt oop);
+extern sqInt isBytes(sqInt oop);
+extern sqInt isFloatObject(sqInt oop);
+extern sqInt isIntegerObject(sqInt objectPointer);
+extern sqInt isPointers(sqInt oop);
+extern sqInt isWords(sqInt oop);
+extern sqInt makePointwithxValueyValue(sqInt xValue, sqInt yValue);
+extern sqInt methodArgumentCount(void);
+extern sqInt nilObject(void);
+extern sqInt pop(sqInt nItems);
+extern sqInt popthenPush(sqInt nItems, sqInt oop);
+extern sqInt popRemappableOop(void);
+extern sqInt positive32BitIntegerFor(sqInt integerValue);
+extern sqInt positive32BitValueOf(sqInt oop);
+extern sqInt primitiveFail(void);
+extern sqInt primitiveFailFor(sqInt reasonCode);
+extern sqInt push(sqInt object);
+extern sqInt pushBool(sqInt trueOrFalse);
+extern sqInt pushInteger(sqInt integerValue);
+extern sqInt pushRemappableOop(sqInt oop);
+extern sqInt slotSizeOf(sqInt oop);
+extern sqInt stackIntegerValue(sqInt offset);
+extern sqInt stackObjectValue(sqInt offset);
+extern sqInt stackValue(sqInt offset);
+extern sqInt storeIntegerofObjectwithValue(sqInt index, sqInt oop, sqInt integer);
+extern sqInt storePointerofObjectwithValue(sqInt index, sqInt oop, sqInt valuePointer);
+extern sqInt topRemappableOop(void);
+
 extern
 #endif
 struct VirtualMachine* interpreterProxy;
 static void * loadBBFn;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"B2DPlugin VMMaker.oscog-eem.222 (i)"
+	"B2DPlugin VMMaker.oscog-eem.232 (i)"
 #else
-	"B2DPlugin VMMaker.oscog-eem.222 (e)"
+	"B2DPlugin VMMaker.oscog-eem.232 (e)"
 #endif
 ;
 static int* objBuffer;
@@ -1664,8 +1752,8 @@
     sqInt runLength;
     sqInt runValue;
 
-	length = interpreterProxy->slotSizeOf(fillList);
-	fillPtr = interpreterProxy->firstIndexableField(fillList);
+	length = slotSizeOf(fillList);
+	fillPtr = firstIndexableField(fillList);
 	nFills = 0;
 	for (i = 0; i <= (length - 1); i += 1) {
 		runLength = ((usqInt) ((((int *) fillPtr))[i]) >> 16);
@@ -1693,11 +1781,11 @@
 
 	/* First check if the oops have the right format */
 
-	if (!(interpreterProxy->isWords(indexList))) {
+	if (!(isWords(indexList))) {
 		return 0;
 	}
-	length = interpreterProxy->slotSizeOf(indexList);
-	fillPtr = interpreterProxy->firstIndexableField(indexList);
+	length = slotSizeOf(indexList);
+	fillPtr = firstIndexableField(indexList);
 	for (i = 0; i <= (length - 1); i += 1) {
 
 		/* Make sure the fill is okay */
@@ -1722,8 +1810,8 @@
     int *ptr;
     sqInt runLength;
 
-	length = interpreterProxy->slotSizeOf(lineWidthList);
-	ptr = interpreterProxy->firstIndexableField(lineWidthList);
+	length = slotSizeOf(lineWidthList);
+	ptr = firstIndexableField(lineWidthList);
 	nItems = 0;
 	for (i = 0; i <= (length - 1); i += 1) {
 		runLength = ((usqInt) ((((int *) ptr))[i]) >> 16);
@@ -1740,7 +1828,7 @@
 {
     sqInt pSize;
 
-	if (!(interpreterProxy->isWords(points))) {
+	if (!(isWords(points))) {
 		return 0;
 	}
 
@@ -1749,7 +1837,7 @@
 	   pSize = nSegments * 3,		for ShortPointArrays or,
 	   pSize = nSegments * 6,		for PointArrays */
 
-	pSize = interpreterProxy->slotSizeOf(points);
+	pSize = slotSizeOf(points);
 	if (!((pSize == (nSegments * 3))
 		 || (pSize == (nSegments * 6)))) {
 		return 0;
@@ -1772,7 +1860,7 @@
 	if (!(checkCompressedFills(fillIndexList))) {
 		return 0;
 	}
-	maxFillIndex = interpreterProxy->slotSizeOf(fillIndexList);
+	maxFillIndex = slotSizeOf(fillIndexList);
 	if (!(checkCompressedFillIndexListmaxsegments(leftFills, maxFillIndex, nSegments))) {
 		return 0;
 	}
@@ -5272,8 +5360,8 @@
 EXPORT(sqInt)
 initialiseModule(void)
 {
-	loadBBFn = interpreterProxy->ioLoadFunctionFrom("loadBitBltFrom", bbPluginName);
-	copyBitsFn = interpreterProxy->ioLoadFunctionFrom("copyBitsFromtoat", bbPluginName);
+	loadBBFn = ioLoadFunctionFrom("loadBitBltFrom", bbPluginName);
+	copyBitsFn = ioLoadFunctionFrom("copyBitsFromtoat", bbPluginName);
 	return (loadBBFn != 0)
 	 && (copyBitsFn != 0);
 }
@@ -5685,15 +5773,15 @@
     sqInt y3;
     sqInt y4;
 
-	loadPointfrom(point1Get(), interpreterProxy->fetchPointerofObject(0, points));
-	if (interpreterProxy->failed()) {
+	loadPointfrom(point1Get(), fetchPointerofObject(0, points));
+	if (failed()) {
 		return null;
 	}
 	x0 = (point1Get())[0];
 	y0 = (point1Get())[1];
 	for (i = 1; i <= (nPoints - 1); i += 1) {
-		loadPointfrom(point1Get(), interpreterProxy->fetchPointerofObject(i, points));
-		if (interpreterProxy->failed()) {
+		loadPointfrom(point1Get(), fetchPointerofObject(i, points));
+		if (failed()) {
 			return null;
 		}
 		x1 = (point1Get())[0];
@@ -5842,13 +5930,13 @@
     sqInt y5;
 
 	for (i = 0; i <= (nSegments - 1); i += 1) {
-		pointOop = interpreterProxy->fetchPointerofObject(i * 3, points);
+		pointOop = fetchPointerofObject(i * 3, points);
 		loadPointfrom(point1Get(), pointOop);
-		pointOop = interpreterProxy->fetchPointerofObject((i * 3) + 1, points);
+		pointOop = fetchPointerofObject((i * 3) + 1, points);
 		loadPointfrom(point2Get(), pointOop);
-		pointOop = interpreterProxy->fetchPointerofObject((i * 3) + 2, points);
+		pointOop = fetchPointerofObject((i * 3) + 2, points);
 		loadPointfrom(point3Get(), pointOop);
-		if (interpreterProxy->failed()) {
+		if (failed()) {
 			return null;
 		}
 		/* begin transformPoints: */
@@ -5994,16 +6082,16 @@
     sqInt value;
 
 	for (i = 0; i <= (n - 1); i += 1) {
-		value = interpreterProxy->fetchPointerofObject(i, transformOop);
-		if (!((interpreterProxy->isIntegerObject(value))
-			 || (interpreterProxy->isFloatObject(value)))) {
-			return interpreterProxy->primitiveFail();
+		value = fetchPointerofObject(i, transformOop);
+		if (!((isIntegerObject(value))
+			 || (isFloatObject(value)))) {
+			return primitiveFail();
 		}
-		if (interpreterProxy->isIntegerObject(value)) {
-			destPtr[i] = (((float) (((double) (interpreterProxy->integerValueOf(value)) ))));
+		if (isIntegerObject(value)) {
+			destPtr[i] = (((float) (((double) (integerValueOf(value)) ))));
 		}
 		else {
-			destPtr[i] = (((float) (interpreterProxy->floatValueOf(value))));
+			destPtr[i] = (((float) (floatValueOf(value))));
 		}
 	}
 }
@@ -6073,52 +6161,52 @@
     sqInt i;
     sqInt ppw;
 
-	if (cmOop == (interpreterProxy->nilObject())) {
+	if (cmOop == (nilObject())) {
 		cmSize = 0;
 		cmBits = null;
 	}
 	else {
-		if (!((interpreterProxy->fetchClassOf(cmOop)) == (interpreterProxy->classBitmap()))) {
-			return interpreterProxy->primitiveFail();
+		if (!((fetchClassOf(cmOop)) == (classBitmap()))) {
+			return primitiveFail();
 		}
-		cmSize = interpreterProxy->slotSizeOf(cmOop);
-		cmBits = interpreterProxy->firstIndexableField(cmOop);
+		cmSize = slotSizeOf(cmOop);
+		cmBits = firstIndexableField(cmOop);
 	}
-	if (interpreterProxy->isIntegerObject(formOop)) {
-		return interpreterProxy->primitiveFail();
+	if (isIntegerObject(formOop)) {
+		return primitiveFail();
 	}
-	if (!(interpreterProxy->isPointers(formOop))) {
-		return interpreterProxy->primitiveFail();
+	if (!(isPointers(formOop))) {
+		return primitiveFail();
 	}
-	if ((interpreterProxy->slotSizeOf(formOop)) < 5) {
-		return interpreterProxy->primitiveFail();
+	if ((slotSizeOf(formOop)) < 5) {
+		return primitiveFail();
 	}
-	bmBits = interpreterProxy->fetchPointerofObject(0, formOop);
-	if (!((interpreterProxy->fetchClassOf(bmBits)) == (interpreterProxy->classBitmap()))) {
-		return interpreterProxy->primitiveFail();
+	bmBits = fetchPointerofObject(0, formOop);
+	if (!((fetchClassOf(bmBits)) == (classBitmap()))) {
+		return primitiveFail();
 	}
-	bmBitsSize = interpreterProxy->slotSizeOf(bmBits);
-	bmWidth = interpreterProxy->fetchIntegerofObject(1, formOop);
-	bmHeight = interpreterProxy->fetchIntegerofObject(2, formOop);
-	bmDepth = interpreterProxy->fetchIntegerofObject(3, formOop);
-	if (interpreterProxy->failed()) {
+	bmBitsSize = slotSizeOf(bmBits);
+	bmWidth = fetchIntegerofObject(1, formOop);
+	bmHeight = fetchIntegerofObject(2, formOop);
+	bmDepth = fetchIntegerofObject(3, formOop);
+	if (failed()) {
 		return null;
 	}
 	if (!((bmWidth >= 0)
 		 && (bmHeight >= 0))) {
-		return interpreterProxy->primitiveFail();
+		return primitiveFail();
 	}
 	if (!((((((bmDepth == 32) || (bmDepth == 8)) || (bmDepth == 16)) || (bmDepth == 1)) || (bmDepth == 2)) || (bmDepth == 4))) {
-		return interpreterProxy->primitiveFail();
+		return primitiveFail();
 	}
 	if (!((cmSize == 0)
 		 || (cmSize == (1 << bmDepth)))) {
-		return interpreterProxy->primitiveFail();
+		return primitiveFail();
 	}
 	ppw = 32 / bmDepth;
 	bmRaster = (bmWidth + (ppw - 1)) / ppw;
 	if (!(bmBitsSize == (bmRaster * bmHeight))) {
-		return interpreterProxy->primitiveFail();
+		return primitiveFail();
 	}
 	/* begin allocateBitmapFill:colormap: */
 	fillSize = GBMBaseSize + cmSize;
@@ -6172,16 +6260,16 @@
     sqInt xIndex;
 
 	xIndex = objBuffer[bmFill + GEObjectIndex];
-	if (xIndex > (interpreterProxy->slotSizeOf(formArray))) {
+	if (xIndex > (slotSizeOf(formArray))) {
 		return null;
 	}
-	formOop = interpreterProxy->fetchPointerofObject(xIndex, formArray);
-	bitsOop = interpreterProxy->fetchPointerofObject(0, formOop);
-	bitsLen = interpreterProxy->slotSizeOf(bitsOop);
+	formOop = fetchPointerofObject(xIndex, formArray);
+	bitsOop = fetchPointerofObject(0, formOop);
+	bitsLen = slotSizeOf(bitsOop);
 	if (!(bitsLen == (objBuffer[bmFill + GBBitmapSize]))) {
 		return null;
 	}
-	return interpreterProxy->firstIndexableField(bitsOop);
+	return firstIndexableField(bitsOop);
 }
 
 
@@ -6922,20 +7010,20 @@
     sqInt value3;
 
 	edge = workBuffer[GWLastExportedEdge];
-	if ((interpreterProxy->slotSizeOf(edgeOop)) < ETBalloonEdgeDataSize) {
+	if ((slotSizeOf(edgeOop)) < ETBalloonEdgeDataSize) {
 		return null;
 	}
 	/* begin edgeXValueOf:put: */
-	value = interpreterProxy->fetchIntegerofObject(ETXValueIndex, edgeOop);
+	value = fetchIntegerofObject(ETXValueIndex, edgeOop);
 	objBuffer[edge + GEXValue] = value;
 	/* begin edgeYValueOf:put: */
-	value1 = interpreterProxy->fetchIntegerofObject(ETYValueIndex, edgeOop);
+	value1 = fetchIntegerofObject(ETYValueIndex, edgeOop);
 	objBuffer[edge + GEYValue] = value1;
 	/* begin edgeZValueOf:put: */
-	value2 = interpreterProxy->fetchIntegerofObject(ETZValueIndex, edgeOop);
+	value2 = fetchIntegerofObject(ETZValueIndex, edgeOop);
 	objBuffer[edge + GEZValue] = value2;
 	/* begin edgeNumLinesOf:put: */
-	value3 = interpreterProxy->fetchIntegerofObject(ETLinesIndex, edgeOop);
+	value3 = fetchIntegerofObject(ETLinesIndex, edgeOop);
 	objBuffer[edge + GENumLines] = value3;
 	return edge;
 }
@@ -6954,7 +7042,7 @@
 	/* begin edgeTransform */
 	transform = ((float *) (workBuffer + GWEdgeTransform));
 	okay = loadTransformFromintolength(transformOop, transform, 6);
-	if (interpreterProxy->failed()) {
+	if (failed()) {
 		return null;
 	}
 	if (!okay) {
@@ -7108,30 +7196,30 @@
     sqInt i;
     sqInt ppw;
 
-	if (!(interpreterProxy->isArray(arrayOop))) {
+	if (!(isArray(arrayOop))) {
 		return 0;
 	}
 	formArray = arrayOop;
-	for (i = 0; i <= ((interpreterProxy->slotSizeOf(formArray)) - 1); i += 1) {
-		formOop = interpreterProxy->fetchPointerofObject(i, formArray);
-		if (interpreterProxy->isIntegerObject(formOop)) {
+	for (i = 0; i <= ((slotSizeOf(formArray)) - 1); i += 1) {
+		formOop = fetchPointerofObject(i, formArray);
+		if (isIntegerObject(formOop)) {
 			return 0;
 		}
-		if (!(interpreterProxy->isPointers(formOop))) {
+		if (!(isPointers(formOop))) {
 			return 0;
 		}
-		if ((interpreterProxy->slotSizeOf(formOop)) < 5) {
+		if ((slotSizeOf(formOop)) < 5) {
 			return 0;
 		}
-		bmBits = interpreterProxy->fetchPointerofObject(0, formOop);
-		if (!((interpreterProxy->fetchClassOf(bmBits)) == (interpreterProxy->classBitmap()))) {
+		bmBits = fetchPointerofObject(0, formOop);
+		if (!((fetchClassOf(bmBits)) == (classBitmap()))) {
 			return 0;
 		}
-		bmBitsSize = interpreterProxy->slotSizeOf(bmBits);
-		bmWidth = interpreterProxy->fetchIntegerofObject(1, formOop);
-		bmHeight = interpreterProxy->fetchIntegerofObject(2, formOop);
-		bmDepth = interpreterProxy->fetchIntegerofObject(3, formOop);
-		if (interpreterProxy->failed()) {
+		bmBitsSize = slotSizeOf(bmBits);
+		bmWidth = fetchIntegerofObject(1, formOop);
+		bmHeight = fetchIntegerofObject(2, formOop);
+		bmDepth = fetchIntegerofObject(3, formOop);
+		if (failed()) {
 			return 0;
 		}
 		if (!((bmWidth >= 0)
@@ -7161,12 +7249,12 @@
     int *rampPtr;
     sqInt rampWidth;
 
-	if (!((interpreterProxy->fetchClassOf(rampOop)) == (interpreterProxy->classBitmap()))) {
-		return interpreterProxy->primitiveFail();
+	if (!((fetchClassOf(rampOop)) == (classBitmap()))) {
+		return primitiveFail();
 	}
-	rampWidth = interpreterProxy->slotSizeOf(rampOop);
+	rampWidth = slotSizeOf(rampOop);
 	/* begin allocateGradientFill:rampWidth:isRadial: */
-	ramp = interpreterProxy->firstIndexableField(rampOop);
+	ramp = firstIndexableField(rampOop);
 	fillSize = GGBaseSize + rampWidth;
 	if (!(allocateObjEntry(fillSize))) {
 		fill = 0;
@@ -7441,30 +7529,30 @@
 {
     sqInt value;
 
-	if (!((interpreterProxy->fetchClassOf(pointOop)) == (interpreterProxy->classPoint()))) {
-		return interpreterProxy->primitiveFail();
+	if (!((fetchClassOf(pointOop)) == (classPoint()))) {
+		return primitiveFail();
 	}
-	value = interpreterProxy->fetchPointerofObject(0, pointOop);
-	if (!((interpreterProxy->isIntegerObject(value))
-		 || (interpreterProxy->isFloatObject(value)))) {
-		return interpreterProxy->primitiveFail();
+	value = fetchPointerofObject(0, pointOop);
+	if (!((isIntegerObject(value))
+		 || (isFloatObject(value)))) {
+		return primitiveFail();
 	}
-	if (interpreterProxy->isIntegerObject(value)) {
-		pointArray[0] = (interpreterProxy->integerValueOf(value));
+	if (isIntegerObject(value)) {
+		pointArray[0] = (integerValueOf(value));
 	}
 	else {
-		pointArray[0] = (((sqInt)(interpreterProxy->floatValueOf(value))));
+		pointArray[0] = (((sqInt)(floatValueOf(value))));
 	}
-	value = interpreterProxy->fetchPointerofObject(1, pointOop);
-	if (!((interpreterProxy->isIntegerObject(value))
-		 || (interpreterProxy->isFloatObject(value)))) {
-		return interpreterProxy->primitiveFail();
+	value = fetchPointerofObject(1, pointOop);
+	if (!((isIntegerObject(value))
+		 || (isFloatObject(value)))) {
+		return primitiveFail();
 	}
-	if (interpreterProxy->isIntegerObject(value)) {
-		pointArray[1] = (interpreterProxy->integerValueOf(value));
+	if (isIntegerObject(value)) {
+		pointArray[1] = (integerValueOf(value));
 	}
 	else {
-		pointArray[1] = (((sqInt)(interpreterProxy->floatValueOf(value))));
+		pointArray[1] = (((sqInt)(floatValueOf(value))));
 	}
 }
 
@@ -7652,30 +7740,30 @@
     sqInt fillOop;
     sqInt state;
 
-	if (!((interpreterProxy->methodArgumentCount()) == 2)) {
+	if (!((methodArgumentCount()) == 2)) {
 		return PrimErrBadNumArgs;
 	}
-	if (((failCode = quickLoadEngineFrom(interpreterProxy->stackValue(2)))) != 0) {
+	if (((failCode = quickLoadEngineFrom(stackValue(2)))) != 0) {
 		return failCode;
 	}
-	fillOop = interpreterProxy->stackObjectValue(0);
-	edgeOop = interpreterProxy->stackObjectValue(1);
-	if (interpreterProxy->failed()) {
+	fillOop = stackObjectValue(0);
+	edgeOop = stackObjectValue(1);
+	if (failed()) {
 		return PrimErrBadArgument;
 	}
-	if (!(((failCode = loadSpanBufferFrom(interpreterProxy->fetchPointerofObject(BESpanIndex, engine)))) == 0)) {
+	if (!(((failCode = loadSpanBufferFrom(fetchPointerofObject(BESpanIndex, engine)))) == 0)) {
 		return failCode;
 	}
-	if (!(loadBitBltFrom(interpreterProxy->fetchPointerofObject(BEBitBltIndex, engine)))) {
+	if (!(loadBitBltFrom(fetchPointerofObject(BEBitBltIndex, engine)))) {
 		return GEFBitBltLoadFailed;
 	}
-	if (!(loadFormsFrom(interpreterProxy->fetchPointerofObject(BEFormsIndex, engine)))) {
+	if (!(loadFormsFrom(fetchPointerofObject(BEFormsIndex, engine)))) {
 		return GEFFormLoadFailed;
 	}
-	if ((interpreterProxy->slotSizeOf(edgeOop)) < ETBalloonEdgeDataSize) {
+	if ((slotSizeOf(edgeOop)) < ETBalloonEdgeDataSize) {
 		return GEFEdgeDataTooSmall;
 	}
-	if ((interpreterProxy->slotSizeOf(fillOop)) < FTBalloonFillDataSize) {
+	if ((slotSizeOf(fillOop)) < FTBalloonFillDataSize) {
 		return GEFFillDataTooSmall;
 	}
 	state = workBuffer[GWState];
@@ -8019,15 +8107,15 @@
 {
     sqInt value;
 
-	if (!((interpreterProxy->fetchClassOf(spanOop)) == (interpreterProxy->classBitmap()))) {
+	if (!((fetchClassOf(spanOop)) == (classBitmap()))) {
 		return GEFClassMismatch;
 	}
 
 	/* Leave last entry unused to avoid complications */
 
-	spanBuffer = interpreterProxy->firstIndexableField(spanOop);
+	spanBuffer = firstIndexableField(spanOop);
 	/* begin spanSizePut: */
-	value = (interpreterProxy->slotSizeOf(spanOop)) - 1;
+	value = (slotSizeOf(spanOop)) - 1;
 	workBuffer[GWSpanSize] = value;
 	return 0;
 }
@@ -8040,16 +8128,16 @@
 static sqInt
 loadTransformFromintolength(sqInt transformOop, float *destPtr, sqInt n)
 {
-	if (transformOop == (interpreterProxy->nilObject())) {
+	if (transformOop == (nilObject())) {
 		return 0;
 	}
-	if (interpreterProxy->isIntegerObject(transformOop)) {
-		return interpreterProxy->primitiveFail();
+	if (isIntegerObject(transformOop)) {
+		return primitiveFail();
 	}
-	if (!((interpreterProxy->slotSizeOf(transformOop)) == n)) {
-		return interpreterProxy->primitiveFail();
+	if (!((slotSizeOf(transformOop)) == n)) {
+		return primitiveFail();
 	}
-	if (interpreterProxy->isWords(transformOop)) {
+	if (isWords(transformOop)) {
 		loadWordTransformFromintolength(transformOop, destPtr, n);
 	}
 	else {
@@ -8210,7 +8298,7 @@
     sqInt i;
     float *srcPtr;
 
-	srcPtr = ((float *) (interpreterProxy->firstIndexableField(transformOop)));
+	srcPtr = ((float *) (firstIndexableField(transformOop)));
 	for (i = 0; i <= (n - 1); i += 1) {
 		destPtr[i] = (srcPtr[i]);
 	}
@@ -8222,21 +8310,21 @@
 static sqInt
 loadWorkBufferFrom(sqInt wbOop)
 {
-	if (interpreterProxy->isIntegerObject(wbOop)) {
+	if (isIntegerObject(wbOop)) {
 		return GEFWorkBufferIsInteger;
 	}
-	if (!(interpreterProxy->isWords(wbOop))) {
+	if (!(isWords(wbOop))) {
 		return GEFWorkBufferIsPointers;
 	}
-	if ((interpreterProxy->slotSizeOf(wbOop)) < GWMinimalSize) {
+	if ((slotSizeOf(wbOop)) < GWMinimalSize) {
 		return GEFWorkBufferTooSmall;
 	}
 	/* begin workBufferPut: */
-	workBuffer = interpreterProxy->firstIndexableField(wbOop);
+	workBuffer = firstIndexableField(wbOop);
 	if (!((workBuffer[GWMagicIndex]) == GWMagicNumber)) {
 		return GEFWorkBufferBadMagic;
 	}
-	if (!((workBuffer[GWSize]) == (interpreterProxy->slotSizeOf(wbOop)))) {
+	if (!((workBuffer[GWSize]) == (slotSizeOf(wbOop)))) {
 		return GEFWorkBufferWrongSize;
 	}
 	if (!((workBuffer[GWObjStart]) == GWHeaderSize)) {
@@ -8499,11 +8587,11 @@
 {
     sqInt failureCode;
 
-	if (!((interpreterProxy->methodArgumentCount()) == 0)) {
-		return interpreterProxy->primitiveFailFor(PrimErrBadNumArgs);
+	if (!((methodArgumentCount()) == 0)) {
+		return primitiveFailFor(PrimErrBadNumArgs);
 	}
-	if (!(((failureCode = quickLoadEngineFrom(interpreterProxy->stackValue(0)))) == 0)) {
-		return interpreterProxy->primitiveFailFor(failureCode);
+	if (!(((failureCode = quickLoadEngineFrom(stackValue(0)))) == 0)) {
+		return primitiveFailFor(failureCode);
 	}
 	workBuffer[GWState] = GEStateCompleted;
 	/* begin storeEngineStateInto: */
@@ -8522,39 +8610,39 @@
     sqInt value;
 
 	if (doProfileStats) {
-		geProfileTime = interpreterProxy->ioMicroMSecs();
+		geProfileTime = ioMicroMSecs();
 	}
-	if (!((interpreterProxy->methodArgumentCount()) == 1)) {
-		return interpreterProxy->primitiveFailFor(PrimErrBadNumArgs);
+	if (!((methodArgumentCount()) == 1)) {
+		return primitiveFailFor(PrimErrBadNumArgs);
 	}
-	if (!(((failureCode = quickLoadEngineFromrequiredState(interpreterProxy->stackValue(1), GEStateWaitingForEdge))) == 0)) {
-		return interpreterProxy->primitiveFailFor(failureCode);
+	if (!(((failureCode = quickLoadEngineFromrequiredState(stackValue(1), GEStateWaitingForEdge))) == 0)) {
+		return primitiveFailFor(failureCode);
 	}
-	edgeOop = interpreterProxy->stackObjectValue(0);
-	if (interpreterProxy->failed()) {
-		return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
+	edgeOop = stackObjectValue(0);
+	if (failed()) {
+		return primitiveFailFor(PrimErrBadArgument);
 	}
 	edge = loadEdgeStateFrom(edgeOop);
 	if (edge == null) {
-		return interpreterProxy->primitiveFailFor(GEFEdgeDataTooSmall);
+		return primitiveFailFor(GEFEdgeDataTooSmall);
 	}
 	if (!(needAvailableSpace(1))) {
-		return interpreterProxy->primitiveFailFor(GEFWorkTooBig);
+		return primitiveFailFor(GEFWorkTooBig);
 	}
 	if ((objBuffer[edge + GENumLines]) > 0) {
 		insertEdgeIntoAET(edge);
 	}
 	if (engineStopped) {
-		return interpreterProxy->primitiveFailFor(GEFEngineStopped);
+		return primitiveFailFor(GEFEngineStopped);
 	}
 	workBuffer[GWState] = GEStateAddingFromGET;
 	/* begin storeEngineStateInto: */
 	workBuffer[GWObjUsed] = objUsed;
-	interpreterProxy->pop(1);
+	pop(1);
 	if (doProfileStats) {
 		workBuffer[GWCountAddAETEntry] = ((workBuffer[GWCountAddAETEntry]) + 1);
 		/* begin incrementStat:by: */
-		value = (interpreterProxy->ioMicroMSecs()) - geProfileTime;
+		value = (ioMicroMSecs()) - geProfileTime;
 		workBuffer[GWTimeAddAETEntry] = ((workBuffer[GWTimeAddAETEntry]) + value);
 	}
 }
@@ -8589,32 +8677,32 @@
 
 	/* Fail if we have the wrong number of arguments */
 
-	if (!((interpreterProxy->methodArgumentCount()) == 5)) {
-		return interpreterProxy->primitiveFailFor(PrimErrBadNumArgs);
+	if (!((methodArgumentCount()) == 5)) {
+		return primitiveFailFor(PrimErrBadNumArgs);
 	}
-	rightFill = interpreterProxy->positive32BitValueOf(interpreterProxy->stackValue(0));
-	leftFill = interpreterProxy->positive32BitValueOf(interpreterProxy->stackValue(1));
-	viaOop = interpreterProxy->stackObjectValue(2);
-	endOop = interpreterProxy->stackObjectValue(3);
-	startOop = interpreterProxy->stackObjectValue(4);
-	if (interpreterProxy->failed()) {
-		return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
+	rightFill = positive32BitValueOf(stackValue(0));
+	leftFill = positive32BitValueOf(stackValue(1));
+	viaOop = stackObjectValue(2);
+	endOop = stackObjectValue(3);
+	startOop = stackObjectValue(4);
+	if (failed()) {
+		return primitiveFailFor(PrimErrBadArgument);
 	}
-	if (!(((failureCode = quickLoadEngineFromrequiredState(interpreterProxy->stackValue(5), GEStateUnlocked))) == 0)) {
-		return interpreterProxy->primitiveFailFor(failureCode);
+	if (!(((failureCode = quickLoadEngineFromrequiredState(stackValue(5), GEStateUnlocked))) == 0)) {
+		return primitiveFailFor(failureCode);
 	}
 	if (!((isFillOkay(leftFill))
 		 && (isFillOkay(rightFill)))) {
-		return interpreterProxy->primitiveFailFor(GEFWrongFill);
+		return primitiveFailFor(GEFWrongFill);
 	}
 	if ((leftFill == rightFill) && 0) {
-		return interpreterProxy->pop(6);
+		return pop(6);
 	}
 	loadPointfrom(point1Get(), startOop);
 	loadPointfrom(point2Get(), viaOop);
 	loadPointfrom(point3Get(), endOop);
-	if (interpreterProxy->failed()) {
-		return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
+	if (failed()) {
+		return primitiveFailFor(PrimErrBadArgument);
 	}
 	/* begin transformPoints: */
 	if (3 > 0) {
@@ -8741,14 +8829,14 @@
 
 		/* begin wbStackClear */
 		workBuffer[GWBufferTop] = (workBuffer[GWSize]);
-		return interpreterProxy->primitiveFailFor(GEFEngineStopped);
+		return primitiveFailFor(GEFEngineStopped);
 	}
-	if (interpreterProxy->failed()) {
-		return interpreterProxy->primitiveFailFor(GEFEntityLoadFailed);
+	if (failed()) {
+		return primitiveFailFor(GEFEntityLoadFailed);
 	}
 	/* begin storeEngineStateInto: */
 	workBuffer[GWObjUsed] = objUsed;
-	interpreterProxy->pop(5);
+	pop(5);
 }
 
 EXPORT(sqInt)
@@ -8756,53 +8844,53 @@
 {
     sqInt failureCode;
     sqInt fillIndex;
-    sqInt isArray;
     sqInt length;
     sqInt lineFill;
     sqInt lineWidth;
     sqInt nSegments;
     sqInt points;
+    sqInt pointsIsArray;
     sqInt segSize;
 
 
 	/* Fail if we have the wrong number of arguments */
 
-	if (!((interpreterProxy->methodArgumentCount()) == 5)) {
-		return interpreterProxy->primitiveFailFor(PrimErrBadNumArgs);
+	if (!((methodArgumentCount()) == 5)) {
+		return primitiveFailFor(PrimErrBadNumArgs);
 	}
-	lineFill = interpreterProxy->positive32BitValueOf(interpreterProxy->stackValue(0));
-	lineWidth = interpreterProxy->stackIntegerValue(1);
-	fillIndex = interpreterProxy->positive32BitValueOf(interpreterProxy->stackValue(2));
-	nSegments = interpreterProxy->stackIntegerValue(3);
-	points = interpreterProxy->stackObjectValue(4);
-	if (interpreterProxy->failed()) {
-		return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
+	lineFill = positive32BitValueOf(stackValue(0));
+	lineWidth = stackIntegerValue(1);
+	fillIndex = positive32BitValueOf(stackValue(2));
+	nSegments = stackIntegerValue(3);
+	points = stackObjectValue(4);
+	if (failed()) {
+		return primitiveFailFor(PrimErrBadArgument);
 	}
-	if (!(((failureCode = quickLoadEngineFromrequiredState(interpreterProxy->stackValue(5), GEStateUnlocked))) == 0)) {
-		return interpreterProxy->primitiveFailFor(failureCode);
+	if (!(((failureCode = quickLoadEngineFromrequiredState(stackValue(5), GEStateUnlocked))) == 0)) {
+		return primitiveFailFor(failureCode);
 	}
-	length = interpreterProxy->slotSizeOf(points);
-	if (interpreterProxy->isWords(points)) {
+	length = slotSizeOf(points);
+	if (isWords(points)) {
 
 		/* Either PointArray or ShortPointArray */
 
-		isArray = 0;
+		pointsIsArray = 0;
 		if (!((length == (nSegments * 3))
 			 || (length == (nSegments * 6)))) {
-			return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
+			return primitiveFailFor(PrimErrBadArgument);
 		}
 	}
 	else {
 
 		/* Must be Array of points */
 
-		if (!(interpreterProxy->isArray(points))) {
-			return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
+		if (!(isArray(points))) {
+			return primitiveFailFor(PrimErrBadArgument);
 		}
 		if (!(length == (nSegments * 3))) {
-			return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
+			return primitiveFailFor(PrimErrBadArgument);
 		}
-		isArray = 1;
+		pointsIsArray = 1;
 	}
 	if ((lineWidth == 0)
 	 || (lineFill == 0)) {
@@ -8812,21 +8900,21 @@
 		segSize = GLWideSize;
 	}
 	if (!(needAvailableSpace(segSize * nSegments))) {
-		return interpreterProxy->primitiveFailFor(GEFWorkTooBig);
+		return primitiveFailFor(GEFWorkTooBig);
 	}
 	if (!((isFillOkay(lineFill))
 		 && (isFillOkay(fillIndex)))) {
-		return interpreterProxy->primitiveFailFor(GEFWrongFill);
+		return primitiveFailFor(GEFWrongFill);
 	}
 	lineFill = transformColor(lineFill);
 	fillIndex = transformColor(fillIndex);
 	if (engineStopped) {
-		return interpreterProxy->primitiveFailFor(GEFEngineStopped);
+		return primitiveFailFor(GEFEngineStopped);
 	}
 	if (((lineFill == 0)
  || (lineWidth == 0))
 	 && (fillIndex == 0)) {
-		return interpreterProxy->pop(5);
+		return pop(5);
 	}
 	if (!(lineWidth == 0)) {
 		lineWidth = transformWidth(lineWidth);
@@ -8834,22 +8922,22 @@
 			lineWidth = 1;
 		}
 	}
-	if (isArray) {
+	if (pointsIsArray) {
 		loadArrayShapenSegmentsfilllineWidthlineFill(points, nSegments, fillIndex, lineWidth, lineFill);
 	}
 	else {
-		loadShapenSegmentsfilllineWidthlineFillpointsShort(interpreterProxy->firstIndexableField(points), nSegments, fillIndex, lineWidth, lineFill, (nSegments * 3) == length);
+		loadShapenSegmentsfilllineWidthlineFillpointsShort(firstIndexableField(points), nSegments, fillIndex, lineWidth, lineFill, (nSegments * 3) == length);
 	}
 	if (engineStopped) {
-		return interpreterProxy->primitiveFailFor(GEFEngineStopped);
+		return primitiveFailFor(GEFEngineStopped);
 	}
-	if (interpreterProxy->failed()) {
-		return interpreterProxy->primitiveFailFor(GEFEntityLoadFailed);
+	if (failed()) {
+		return primitiveFailFor(GEFEntityLoadFailed);
 	}
 	workBuffer[GWNeedsFlush] = 1;
 	/* begin storeEngineStateInto: */
 	workBuffer[GWObjUsed] = objUsed;
-	interpreterProxy->pop(5);
+	pop(5);
 }
 
 EXPORT(sqInt)
@@ -8886,30 +8974,30 @@
 
 	/* Fail if we have the wrong number of arguments */
 
-	if (!((interpreterProxy->methodArgumentCount()) == 7)) {
-		return interpreterProxy->primitiveFailFor(PrimErrBadNumArgs);
+	if (!((methodArgumentCount()) == 7)) {
+		return primitiveFailFor(PrimErrBadNumArgs);
 	}
-	xIndex = interpreterProxy->stackIntegerValue(0);
+	xIndex = stackIntegerValue(0);
 	if (xIndex <= 0) {
-		return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
+		return primitiveFailFor(PrimErrBadArgument);
 	}
-	nrmOop = interpreterProxy->stackObjectValue(1);
-	dirOop = interpreterProxy->stackObjectValue(2);
-	originOop = interpreterProxy->stackObjectValue(3);
-	tileFlag = interpreterProxy->booleanValueOf(interpreterProxy->stackValue(4));
-	cmOop = interpreterProxy->stackObjectValue(5);
-	formOop = interpreterProxy->stackObjectValue(6);
-	if (interpreterProxy->failed()) {
-		return interpreterProxy->primitiveFailFor(PrimErrBadArgument);
+	nrmOop = stackObjectValue(1);
+	dirOop = stackObjectValue(2);
+	originOop = stackObjectValue(3);
+	tileFlag = booleanValueOf(stackValue(4));
+	cmOop = stackObjectValue(5);
+	formOop = stackObjectValue(6);
+	if (failed()) {
+		return primitiveFailFor(PrimErrBadArgument);
 	}
-	if (!(((failureCode = quickLoadEngineFromrequiredState(interpreterProxy->stackValue(7), GEStateUnlocked))) == 0)) {
-		return interpreterProxy->primitiveFailFor(failureCode);
+	if (!(((failureCode = quickLoadEngineFromrequiredState(stackValue(7), GEStateUnlocked))) == 0)) {
+		return primitiveFailFor(failureCode);
 	}
 	loadPointfrom(point1Get(), originOop);
 	loadPointfrom(point2Get(), dirOop);
 	loadPointfrom(point3Get(), nrmOop);
-	if (interpreterProxy->failed()) {
-		return interpreterProxy->primitiveFailFor(GEFBadPoint);
+	if (failed()) {
+		return primitiveFailFor(GEFBadPoint);
 	}
 	/* begin loadBitmapFill:colormap:tile:from:along:normal:xIndex: */
 	tileFlag1 = (tileFlag
@@ -8921,61 +9009,61 @@
 	point2 = ((int *) (workBuffer + GWPoint2));
 	/* begin point3Get */
 	point3 = ((int *) (workBuffer + GWPoint3));
-	if (cmOop == (interpreterProxy->nilObject())) {
+	if (cmOop == (nilObject())) {
 		cmSize = 0;
 		cmBits = null;
 	}
 	else {
-		if (!((interpreterProxy->fetchClassOf(cmOop)) == (interpreterProxy->classBitmap()))) {
-			fill = interpreterProxy->primitiveFail();
+		if (!((fetchClassOf(cmOop)) == (classBitmap()))) {
+			fill = primitiveFail();
 			goto l1;
 		}
-		cmSize = interpreterProxy->slotSizeOf(cmOop);
-		cmBits = interpreterProxy->firstIndexableField(cmOop);
+		cmSize = slotSizeOf(cmOop);
+		cmBits = firstIndexableField(cmOop);
 	}
-	if (interpreterProxy->isIntegerObject(formOop)) {
-		fill = interpreterProxy->primitiveFail();
+	if (isIntegerObject(formOop)) {
+		fill = primitiveFail();
 		goto l1;
 	}
-	if (!(interpreterProxy->isPointers(formOop))) {
-		fill = interpreterProxy->primitiveFail();
+	if (!(isPointers(formOop))) {
+		fill = primitiveFail();
 		goto l1;
 	}
-	if ((interpreterProxy->slotSizeOf(formOop)) < 5) {
-		fill = interpreterProxy->primitiveFail();
+	if ((slotSizeOf(formOop)) < 5) {
+		fill = primitiveFail();
 		goto l1;
 	}
-	bmBits = interpreterProxy->fetchPointerofObject(0, formOop);

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list