VM Maker: VMMaker.oscog-eem.2343.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

VM Maker: VMMaker.oscog-eem.2343.mcz

commits-2
 
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.

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!

Reply | Threaded
Open this post in threaded view
|

Re: VM Maker: VMMaker.oscog-eem.2343.mcz

Tobias Pape
 
Hi Eliot,

> On 06.03.2018, at 21:22, [hidden email] 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!
>

Reply | Threaded
Open this post in threaded view
|

Re: VM Maker: VMMaker.oscog-eem.2343.mcz

Eliot Miranda-2
 
Hi Tobias,

On Tue, Mar 6, 2018 at 10:31 PM, Tobias Pape <[hidden email]> wrote:

Hi Eliot,

> On 06.03.2018, at 21:22, [hidden email] 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

Forgive the delay in generating the code.  I have to merge with Alistair's latest commit and got distracted watching and replying to Clément's wonderful screen cast.  It'll be done soon. 

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!
>




--
_,,,^..^,,,_
best, Eliot
Reply | Threaded
Open this post in threaded view
|

Re: VM Maker: VMMaker.oscog-eem.2343.mcz

Tobias Pape
 

> On 07.03.2018, at 18:26, Eliot Miranda <[hidden email]> wrote:
>
> Hi Tobias,
>
> On Tue, Mar 6, 2018 at 10:31 PM, Tobias Pape <[hidden email]> wrote:
>
> Hi Eliot,
>
> > On 06.03.2018, at 21:22, [hidden email] 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
>
> Forgive the delay in generating the code.  I have to merge with Alistair's latest commit and got distracted watching and replying to Clément's wonderful screen cast.  It'll be done soon.
>

Hey, there's nothing to ask for forgiveness for o_O.
Everything's fine.
Also, the screencast is fine :D

Best regards
        -Tobias


> 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!
> >
>
>
>
>
> --
> _,,,^..^,,,_
> best, Eliot