[Vm-dev] VM Maker: VMMaker.oscog-dtl.737.mcz

commits at source.squeak.org commits at source.squeak.org
Fri May 30 00:22:57 UTC 2014


David T. Lewis uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-dtl.737.mcz

==================== Summary ====================

Name: VMMaker.oscog-dtl.737
Author: dtl
Time: 29 May 2014, 8:18:52.343 pm
UUID: dd942895-9394-4192-aa6f-dc808c730053
Ancestors: VMMaker.oscog-tpr.736

Fix code generation for ThreadedFFIPlugin by ensuring that target directory exists, addressing failures in http://build.squeak.org/job/CogVM/ code generation test.

Fix regression in primitiveUtcWithOffset, answer the correct local time offset.

=============== Diff against VMMaker.oscog-tpr.736 ===============

Item was changed:
  ----- Method: InterpreterPrimitives>>primitiveUtcWithOffset (in category 'system control primitives') -----
  primitiveUtcWithOffset
  	"Answer an array with UTC microseconds since the Posix epoch and
  	the current seconds offset from GMT in the local time zone.
  	This is a named (not numbered) primitive in the null module (ie the VM)"
+ 	| epochDelta offset resultArray utcMicroseconds |
+ 
- 	| resultArray |
  	<export: true>
+ 	<var: #epochDelta declareC: 'static usqLong epochDelta= 2177452800000000ULL'>
+ 	<var: #utcMicroseconds type: #usqLong>
+ 	<var: #offset type: #sqLong>
+ 	utcMicroseconds := self ioUTCMicroseconds.
+ 	offset := self ioLocalMicroseconds - utcMicroseconds.
+ 	offset := offset / 1000000.
+ 	objectMemory pushRemappableOop: (objectMemory integerObjectOf: offset).
+ 	objectMemory pushRemappableOop: (self positive64BitIntegerFor: utcMicroseconds - epochDelta).
- 	"2177452800000000 = '1/1/1970' asDate asSeconds - '1/1/1901' asDate asSeconds * 1,000,000"
- 	objectMemory pushRemappableOop: (self positive64BitIntegerFor: self ioUTCMicrosecondsNow - 2177452800000000).
  	resultArray := objectMemory instantiateClass: objectMemory classArray indexableSize: 2.
  	self storePointer: 0 ofObject: resultArray withValue: objectMemory popRemappableOop.
+ 	self storePointerUnchecked: 1 ofObject: resultArray withValue: objectMemory popRemappableOop.
- 	self storePointerUnchecked: 1 ofObject: resultArray withValue: (objectMemory integerObjectOf: self ioLocalSecondsOffset).
  	self pop: 1 thenPush: resultArray
  !

Item was changed:
  ----- Method: ThreadedFFIPlugin class>>translateInDirectory:doInlining: (in category 'translation') -----
  translateInDirectory: directory doInlining: inlineFlag
  	"As a hack to allow ThreadedFFIPlugin to generate a skeletal SqueakFFIPrims.c that
  	 simply includes the fleshed-out SqueakIA32FFIPrims.c, SqueakARMFFIPrims.c et al,
  	 intercept for ThreadedFFIPlugin and output generateCodeStringForPrimitives."
  	| ffiPluginRootClass |
  	ffiPluginRootClass := thisContext method methodClass soleInstance.
  	^self == ffiPluginRootClass
  		ifTrue:
  			[self
  				storeString: self generateCodeStringForPrimitives
  				onFileNamed: (directory fullNameFor: self moduleName, '.c').
  			#()]
  		ifFalse:
  			[super
+ 				translateInDirectory: (directory containingDirectory directoryNamed: ffiPluginRootClass moduleName) assureExistence
- 				translateInDirectory: (directory containingDirectory directoryNamed: ffiPluginRootClass moduleName)
  				doInlining: inlineFlag]!



More information about the Vm-dev mailing list