[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