[Vm-dev] [commit] r2203 - Update for Alien support. Set VM_PROXY_MINOR to 8. Requires interpreter

Javier Pimás elpochodelagente at gmail.com
Thu May 27 06:11:49 UTC 2010


Hi all,
       I just checked out svn and tryied to compile in linux. Igor already
sent a mail about this, this commit added alien support but didn't change
platforms/unix/src, so in Unix you get a lot undefined reference errors.
       Regenerating C from slang should be enough (I think), but, may I ask
why you didn't also commit the updated platform/unix/src? It won't compile
as it is now.

Regards,
          Javier.

On Sun, Apr 25, 2010 at 4:53 PM, <commits at squeakvm.org> wrote:

>
> Author: lewis
> Date: 2010-04-25 12:53:47 -0700 (Sun, 25 Apr 2010)
> New Revision: 2203
>
> Modified:
>   trunk/platforms/Cross/vm/sqVirtualMachine.c
>   trunk/platforms/Cross/vm/sqVirtualMachine.h
> Log:
> Update for Alien support. Set VM_PROXY_MINOR to 8. Requires interpreter
> functions in SqueakSource/Alien Alien-VMMaker-Support package. These are
> now incorporated in SqueakSource/VMMaker VMMaker-dtl.170.
>
>
> Modified: trunk/platforms/Cross/vm/sqVirtualMachine.c
> ===================================================================
> --- trunk/platforms/Cross/vm/sqVirtualMachine.c 2010-04-13 18:55:21 UTC
> (rev 2202)
> +++ trunk/platforms/Cross/vm/sqVirtualMachine.c 2010-04-25 19:53:47 UTC
> (rev 2203)
> @@ -73,6 +73,8 @@
>  sqInt isWordsOrBytes(sqInt oop);
>  sqInt includesBehaviorThatOf(sqInt aClass, sqInt aSuperClass);
>  sqInt isArray(sqInt oop);
> +sqInt internalIsMutable(sqInt oop);
> +sqInt internalIsImmutable(sqInt oop);
>
>  /* InterpreterProxy methodsFor: 'converting' */
>  sqInt  booleanValueOf(sqInt obj);
> @@ -128,6 +130,7 @@
>  sqInt fullGC(void);
>  sqInt incrementalGC(void);
>  sqInt primitiveFail(void);
> +sqInt primitiveFailFor(sqInt reasonCode);
>  sqInt showDisplayBitsLeftTopRightBottom(sqInt aForm, sqInt l, sqInt t,
> sqInt r, sqInt b);
>  sqInt signalSemaphoreWithIndex(sqInt semaIndex);
>  sqInt success(sqInt aBoolean);
> @@ -144,17 +147,29 @@
>  sqInt copyBitsFromtoat(sqInt leftX, sqInt rightX, sqInt yValue);
>
>  /* InterpreterProxy methodsFor: 'FFI support' */
> -sqInt classExternalAddress(void);
> +sqInt classExternalAddress(void); /* Old Squeak FFI */
>  sqInt classExternalData(void);
>  sqInt classExternalFunction(void);
>  sqInt classExternalLibrary(void);
>  sqInt classExternalStructure(void);
> +sqInt classAlien(void); /* Newsqueak FFI */
> +sqInt classUnsafeAlien(void); /* Newsqueak FFI */
> +sqInt getStackPointer(void);  /* Newsqueak FFI */
> +sqInt sendInvokeCallbackStackRegistersJmpbuf(sqInt thunkPtrAsInt, sqInt
> stackPtrAsInt, sqInt regsPtrAsInt, sqInt jmpBufPtrAsInt); /* Newsqueak FFI
> */
> +sqInt reestablishContextPriorToCallback(sqInt callbackContext); /*
> Newsqueak FFI */
>  sqInt ioLoadModuleOfLength(sqInt moduleNameIndex, sqInt moduleNameLength);
>  sqInt ioLoadSymbolOfLengthFromModule(sqInt functionNameIndex, sqInt
> functionNameLength, sqInt moduleHandle);
>  sqInt isInMemory(sqInt address);
>
>  void *ioLoadFunctionFrom(char *fnName, char *modName);
>
> +
> +/* Proxy declarations for v1.8 */
> +sqInt callbackEnter(sqInt *callbackID);
> +sqInt callbackLeave(sqInt  callbackID);
> +sqInt addGCRoot(sqInt *varLoc);
> +sqInt removeGCRoot(sqInt *varLoc);
> +
>  struct VirtualMachine *VM = NULL;
>
>  static sqInt majorVersion(void) {
> @@ -325,16 +340,36 @@
>  #endif
>
>  #if VM_PROXY_MINOR > 5
> +
>        VM->isArray = isArray;
>        VM->forceInterruptCheck = forceInterruptCheck;
> +
>  #endif
>
>  #if VM_PROXY_MINOR > 6
> +
>        VM->fetchLong32ofObject = fetchLong32ofObject;
>        VM->getThisSessionID = getThisSessionID;
>        VM->ioFilenamefromStringofLengthresolveAliases =
> ioFilenamefromStringofLengthresolveAliases;
>        VM->vmEndianness = vmEndianness;
> +
>  #endif
>
> +#if VM_PROXY_MINOR > 7
> +
> +       VM->internalIsImmutable = internalIsImmutable;
> +       VM->internalIsMutable   = internalIsMutable;
> +       VM->primitiveFailFor    = primitiveFailFor;
> +       VM->classAlien          = classAlien;
> +       VM->getStackPointer     = (sqInt *(*)(void))getStackPointer;
> +       VM->sendInvokeCallbackStackRegistersJmpbuf =
> sendInvokeCallbackStackRegistersJmpbuf;
> +       VM->reestablishContextPriorToCallback =
> reestablishContextPriorToCallback;
> +       VM->classUnsafeAlien    = classUnsafeAlien;
> +       VM->callbackEnter = callbackEnter;
> +       VM->callbackLeave = callbackLeave;
> +       VM->addGCRoot = addGCRoot;
> +       VM->removeGCRoot = removeGCRoot;
> +
> +#endif
>        return VM;
>  }
>
> Modified: trunk/platforms/Cross/vm/sqVirtualMachine.h
> ===================================================================
> --- trunk/platforms/Cross/vm/sqVirtualMachine.h 2010-04-13 18:55:21 UTC
> (rev 2202)
> +++ trunk/platforms/Cross/vm/sqVirtualMachine.h 2010-04-25 19:53:47 UTC
> (rev 2203)
> @@ -9,11 +9,26 @@
>    should work with older VMs. */
>  #ifndef VM_PROXY_MINOR
>  /* Increment the following number if you add functions at the end */
> -#define VM_PROXY_MINOR 7
> +#define VM_PROXY_MINOR 8
>  #endif
>
>  #include "sqMemoryAccess.h"
>
> +#if VM_PROXY_MINOR > 7
> +# define PrimErrNoErr 0
> +# define PrimErrGenericFailure 1
> +# define PrimErrBadReceiver 2
> +# define PrimErrBadArgument 3
> +# define PrimErrBadIndex 4
> +# define PrimErrBadNumArgs 5
> +# define PrimErrInappropriate 6
> +# define PrimErrUnsupported 7
> +# define PrimErrNoModification 8
> +# define PrimErrNoMemory 9
> +# define PrimErrNoCMemory 10
> +# define PrimErrNotFound 11
> +#endif
> +
>  typedef sqInt (*CompilerHook)();
>
>  struct VirtualMachine* sqGetInterpreterProxy(void);
> @@ -204,11 +219,52 @@
>  #if VM_PROXY_MINOR > 6
>        sqInt  (*fetchLong32ofObject)(sqInt fieldFieldIndex, sqInt oop);
>        sqInt  (*getThisSessionID)(void);
> -       sqInt     (*ioFilenamefromStringofLengthresolveAliases)(char*
> aCharBuffer, char* filenameIndex, sqInt filenameLength, sqInt resolveFlag);
> +       sqInt  (*ioFilenamefromStringofLengthresolveAliases)(char*
> aCharBuffer, char* filenameIndex, sqInt filenameLength, sqInt resolveFlag);
>        sqInt  (*vmEndianness)(void);
>  #endif
>
> +#if VM_PROXY_MINOR > 7
> +       sqInt  (*internalIsImmutable)(sqInt oop);
> +       sqInt  (*internalIsMutable)(sqInt oop);
> +       sqInt  (*primitiveFailFor)(sqInt code);
> +       sqInt  (*classAlien)(void);
> +       sqInt *(*getStackPointer)(void);
> +       sqInt  (*sendInvokeCallbackStackRegistersJmpbuf)(sqInt
> thunkPtrAsInt, sqInt stackPtrAsInt, sqInt regsPtrAsInt, sqInt
> jmpBufPtrAsInt);
> +       sqInt  (*reestablishContextPriorToCallback)(sqInt callbackContext);
> +       sqInt  (*classUnsafeAlien)(void);
> +       /* New methods for proxy version 1.8 */
> +
> +       /* callbackEnter: Re-enter the interpreter loop for a callback.
> +       Arguments:
> +       callbackID: Pointer to a location receiving the callback ID
> +       used in callbackLeave
> +       Returns: True if successful, false otherwise */
> +       sqInt (*callbackEnter)(sqInt *callbackID);
> +
> +       /* callbackLeave: Leave the interpreter from a previous callback
> +       Arguments:
> +       callbackID: The ID of the callback received from callbackEnter()
> +       Returns: True if succcessful, false otherwise. */
> +       sqInt (*callbackLeave)(sqInt  callbackID);
> +
> +       /* addGCRoot: Add a variable location to the garbage collector.
> +       The contents of the variable location will be updated accordingly.
> +       Arguments:
> +       varLoc: Pointer to the variable location
> +       Returns: True if successful, false otherwise. */
> +       sqInt (*addGCRoot)(sqInt *varLoc);
> +
> +       /* removeGCRoot: Remove a variable location from the garbage
> collector.
> +       Arguments:
> +       varLoc: Pointer to the variable location
> +       Returns: True if successful, false otherwise.
> +       */
> +       sqInt (*removeGCRoot)(sqInt *varLoc);
> +#endif
>
> +#if VM_PROXY_MINOR > 8
> +#endif
> +
>  } VirtualMachine;
>
>  #endif /* _SqueakVM_H */
>
>


-- 
Javier Pimás
Ciudad de Buenos Aires
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20100527/f9e0b95b/attachment.htm


More information about the Vm-dev mailing list