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

commits at source.squeak.org commits at source.squeak.org
Sat May 4 15:36:16 UTC 2013

David T. Lewis uploaded a new version of VMMaker to project VM Maker:

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

Name: VMMaker.oscog-dtl.286
Author: dtl
Time: 4 May 2013, 11:29:25.237 am
UUID: 8be237d9-7812-4792-9723-90f9cff0c2e9
Ancestors: VMMaker.oscog-eem.285

Replace broken primitiveUtcWithOffset with a version that works.

=============== Diff against VMMaker.oscog-eem.285 ===============

Item was changed:
  ----- Method: InterpreterPrimitives>>primitiveUtcWithOffset (in category 'system control primitives') -----
  	"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 |
- 	| offset 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).
- 	<var: #clock type: 'sqLong'>
- 	offset := self ioUTCMicroseconds - self ioLocalMicroseconds.
- 	objectMemory pushRemappableOop: (self positive64BitIntegerFor: self ioUTCMicroseconds).
  	resultArray := objectMemory instantiateClass: objectMemory classArray indexableSize: 2.
  	self stObject: resultArray at: 1 put: objectMemory popRemappableOop.
+ 	self stObject: resultArray at: 2 put: objectMemory popRemappableOop.
- 	self stObject: resultArray at: 2 put: (objectMemory integerObjectOf: offset).
  	self pop: 1 thenPush: resultArray

More information about the Vm-dev mailing list