[Vm-dev] VM Maker: VMMaker.oscog-eem.2698.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Feb 3 03:45:57 UTC 2020


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2698.mcz

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

Name: VMMaker.oscog-eem.2698
Author: eem
Time: 2 February 2020, 7:45:41.640351 pm
UUID: 562cdbbc-e6f4-4b05-914e-7991755334e8
Ancestors: VMMaker.oscog-eem.2697

Cogit: Implement NativePopR:& NativePushR:.  Fix compilation warnings for cStack/FramePointerAddress access.  Fix nextProfileTickAddress for 64-bit simulation.  Write stackLimitAddress & vmOwnerLockAddress in the modern style.

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

Item was changed:
+ ----- Method: CoInterpreter>>cFramePointerAddress (in category 'trampoline support') -----
- ----- Method: CoInterpreter>>cFramePointerAddress (in category 'cog jit support') -----
  cFramePointerAddress
  	<api>
+ 	<returnTypeC: #usqInt>
  	^self
+ 		cCode: [(self addressOf: CFramePointer) asUnsignedInteger]
- 		cCode: [self addressOf: CFramePointer]
  		inSmalltalk: [cogit simulatedReadWriteVariableAddress: #getCFramePointer in: self]!

Item was changed:
+ ----- Method: CoInterpreter>>cStackPointerAddress (in category 'trampoline support') -----
- ----- Method: CoInterpreter>>cStackPointerAddress (in category 'cog jit support') -----
  cStackPointerAddress
  	<api>
+ 	<returnTypeC: #usqInt>
  	^self
+ 		cCode: [(self addressOf: CStackPointer) asUnsignedInteger]
- 		cCode: [self addressOf: CStackPointer]
  		inSmalltalk: [cogit simulatedReadWriteVariableAddress: #getCStackPointer in: self]!

Item was changed:
  ----- Method: CoInterpreter>>nextProfileTickAddress (in category 'trampoline support') -----
  nextProfileTickAddress
  	<api>
  	<returnTypeC: #usqInt>
  	"N.B. nextProfileTick is 64-bits"
  	^self cCode: [(self addressOf: nextProfileTick) asUnsignedInteger]
  		inSmalltalk:
+ 			[objectMemory wordSize = 8
- 			[VMBIGENDIAN
  				ifTrue:
+ 					[cogit simulatedReadWriteVariableAddress: #nextProfileTick in: self]
- 					[cogit simulatedReadWriteVariableAddress: #nextProfileTickLow in: self.
- 					 cogit simulatedReadWriteVariableAddress: #nextProfileTickHigh in: self]
  				ifFalse:
+ 					[VMBIGENDIAN
+ 						ifTrue:
+ 							[cogit simulatedReadWriteVariableAddress: #nextProfileTickLow in: self.
+ 							 cogit simulatedReadWriteVariableAddress: #nextProfileTickHigh in: self]
+ 						ifFalse:
+ 							[cogit simulatedReadWriteVariableAddress: #nextProfileTickHigh in: self.
+ 							 cogit simulatedReadWriteVariableAddress: #nextProfileTickLow in: self]]]!
- 					[cogit simulatedReadWriteVariableAddress: #nextProfileTickHigh in: self.
- 					 cogit simulatedReadWriteVariableAddress: #nextProfileTickLow in: self]]!

Item was changed:
  ----- Method: CoInterpreter>>stackLimitAddress (in category 'trampoline support') -----
  stackLimitAddress
  	<api>
  	<returnTypeC: #usqInt>
+ 	^self cCode: [(self addressOf: stackLimit) asUnsignedInteger]
- 	^self cCode: '(usqInt)&GIV(stackLimit)'
  		  inSmalltalk: [cogit simulatedVariableAddress: #stackLimitFromMachineCode in: self]!

Item was changed:
  ----- Method: CoInterpreterMT>>vmOwnerLockAddress (in category 'cog jit support') -----
  vmOwnerLockAddress
+ 	<doNotGenerate>
+ 	^cogThreadManager
+ 		ifNotNil: [:ctm| ctm vmOwnerLockAddress]
+ 		ifNil: [0]!
- 	<api> "NB. For the JIT only, so it can generate the lock & unlock functions."
- 	<returnTypeC: #usqInt>
- 	^processHasThreadId
- 		ifTrue: [self cCode: '(usqInt)&GIV(vmOwnerLock)'
- 					inSmalltalk: [self inMemoryVMOwnerLockAddress]]
- 		ifFalse: [0]!

Item was added:
+ ----- Method: CogThreadManager>>vmOwnerLockAddress (in category 'public api') -----
+ vmOwnerLockAddress
+ 	<api> "NB. For the JIT only, so it can generate the lock & unlock functions."
+ 	<returnTypeC: #usqInt>
+ 	^self
+ 		cCode: [(self addressOf: vmOwnerLock) asUnsignedInteger]
+ 		inSmalltalk: [self inMemoryVMOwnerLockAddress]!

Item was added:
+ ----- Method: Cogit>>NativePopR: (in category 'abstract instructions') -----
+ NativePopR: reg
+ 	^self gen: (NativeSPReg = SPReg ifTrue: [PopR] ifFalse: [NativePopR]) operand: reg!

Item was added:
+ ----- Method: Cogit>>NativePushR: (in category 'abstract instructions') -----
+ NativePushR: reg
+ 	^self gen: (NativeSPReg = SPReg ifTrue: [PushR] ifFalse: [NativePushR]) operand: reg!



More information about the Vm-dev mailing list