[Vm-dev] VM Maker: VMMaker.oscog-eem.2343.mcz
Tobias Pape
Das.Linux at gmx.de
Wed Mar 7 06:31:21 UTC 2018
Hi Eliot,
> On 06.03.2018, at 21:22, commits at source.squeak.org wrote:
>
>
> Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
> http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2343.mcz
>
> ==================== Summary ====================
>
> Name: VMMaker.oscog-eem.2343
> Author: eem
> Time: 6 March 2018, 12:21:51.336493 pm
> UUID: e603efa4-c652-41e1-a981-6814acaca9f3
> Ancestors: VMMaker.oscog-topa.2342
>
> Better comment Tobias' inclusion of config.h in all plugins. Also ensure (almost) no duplications can occur.
>
Thanks for making this better :D
Best regards
-Tobias
> Fix a typo in primitiveVMParameter and a compiler warning in primitiveSignalAtMilliseconds (deltaMsecs < 0 implies that deltaMsecs is signed).
>
> =============== Diff against VMMaker.oscog-topa.2342 ===============
>
> Item was changed:
> ----- Method: StackInterpreterPrimitives>>primitiveSignalAtMilliseconds (in category 'system control primitives') -----
> primitiveSignalAtMilliseconds
> "Cause the time semaphore, if one has been registered, to be
> signalled when the microsecond clock is greater than or equal to
> the given tick value. A tick value of zero turns off timer interrupts."
> | msecsObj msecs deltaMsecs sema |
> <var: #msecs type: #usqInt>
> + <var: #deltaMsecs type: #sqLong>
> - <var: #deltaMsecs type: #usqLong>
> msecsObj := self stackTop.
> sema := self stackValue: 1.
> msecs := self positive32BitValueOf: msecsObj.
>
> self successful ifTrue:
> [(objectMemory isSemaphoreOop: sema) ifTrue:
> [objectMemory splObj: TheTimerSemaphore put: sema.
> deltaMsecs := msecs - (self ioMSecs bitAnd: MillisecondClockMask).
> deltaMsecs < 0 ifTrue:
> [deltaMsecs := deltaMsecs + MillisecondClockMask + 1].
> nextWakeupUsecs := self ioUTCMicroseconds + (deltaMsecs * 1000).
> ^self pop: 2].
> sema = objectMemory nilObject ifTrue:
> [objectMemory
> storePointer: TheTimerSemaphore
> ofObject: objectMemory specialObjectsOop
> withValue: objectMemory nilObject.
> nextWakeupUsecs := 0.
> ^self pop: 2]].
> self primitiveFailFor: PrimErrBadArgument!
>
> Item was changed:
> ----- Method: StackInterpreterPrimitives>>primitiveVMParameter (in category 'system control primitives') -----
> (excessive size, no diff calculated)
>
> Item was changed:
> ----- Method: VMPluginCodeGenerator>>emitCHeaderOn: (in category 'C code generator') -----
> emitCHeaderOn: aStream
> + "Write a C file header onto the given stream, adding include files and some basic definitions."
> + | standardHeaders |
> + aStream nextPutAll: (self fileHeaderVersionStampForSourceClass: pluginClass); cr; cr.
> - "Write a C file header onto the given stream."
>
> + "config.h should always go first because config.h properly defines flags.
> + One of those is _GNU_SOURCE, as explained in https://www.gnu.org/software/autoconf/manual/autoconf.html#Posix-Variants,
> + where the Autoconf macro AC_USE_SYSTEM_EXTENSIONS makes sure this is defined."
> + standardHeaders := #('"config.h"' '<math.h>' '<stdio.h>' '<stdlib.h>' '<string.h>' '<time.h>').
> + self emitHeaderFiles: standardHeaders on: aStream.
> - aStream nextPutAll: (self fileHeaderVersionStampForSourceClass: pluginClass).
> - aStream cr; cr.
>
> + headerFiles := headerFiles copyWithoutAll: standardHeaders.
> - #('<math.h>' '<stdio.h>' '<stdlib.h>' '<string.h>' '<time.h>') reverseDo:
> - [:hdr| self addHeaderFileFirst: hdr].
> - self addHeaderFileFirst: '"config.h"'. "Should always go first"
> -
> "Additional header files; include C library ones first."
> self emitHeaderFiles: (headerFiles select: [:hdr| hdr includes: $<]) on: aStream.
>
> + aStream cr; nextPutAll: '/* Default EXPORT macro that does nothing (see comment in sq.h): */
> - aStream cr; nextPutAll:'/* 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. */
> #include "sqConfig.h" /* Configuration options */
> #include "sqVirtualMachine.h" /* The virtual machine proxy definition */
> #include "sqPlatformSpecific.h" /* Platform specific definitions */
>
> #define true 1
> #define false 0
> #define null 0 /* using ''null'' because nil is predefined in Think C */
> #ifdef SQUEAK_BUILTIN_PLUGIN
> # undef EXPORT
> # define EXPORT(returnType) static returnType
> #endif'; cr; cr.
> self addHeaderFile: '"sqMemoryAccess.h"'.
> "Additional header files; include squeak VM ones last"
> self emitHeaderFiles: (headerFiles reject: [:hdr| hdr includes: $<]) on: aStream.
> self maybePutPreambleFor: pluginClass on: aStream.
> aStream cr!
>
More information about the Vm-dev
mailing list