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

commits at source.squeak.org commits at source.squeak.org
Thu Jul 3 13:09:06 UTC 2014


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

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

Name: VMMaker.oscog-eem.798
Author: eem
Time: 3 July 2014, 6:06:32.954 am
UUID: f47e2c22-fea0-4762-b689-8b295a59d8ac
Ancestors: VMMaker.oscog-eem.797

Sort VM methods by class first, selector second, to group
by coarse functionality (e.g. scavenger methods) for the
benefit of the VMProfiler.

Access missOffset via a macro (very minor speedup).

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

Item was changed:
  ----- Method: CCodeGenerator>>sortMethods: (in category 'utilities') -----
  sortMethods: aTMethodCollection
  	"We need to define this since different Squeak versions answer different results
+ 	 for asSortedCollection and if sort order changes, generated code changes too.
+ 	 When generating VM code, use class name as major sort index as this groups
+ 	 some methods by functionality (e.g. SpurGenerationScavenger) and that makes
+ 	 the VMProfiler more useful."
- 	 for asSortedCollection and if sort order changes, generated code changes too."
  	^aTMethodCollection asSortedCollection:
+ 		(self isGeneratingPluginCode
+ 			ifTrue:
+ 				[[:a :b| a selector caseSensitiveLessOrEqual: b selector]]
+ 			ifFalse:
+ 				[[:a :b|
+ 				  a definingClass = b definingClass
+ 					ifTrue: [a selector caseSensitiveLessOrEqual: b selector]
+ 					ifFalse: [a definingClass name caseSensitiveLessOrEqual: b definingClass name]]])!
- 		[:a :b| a selector caseSensitiveLessOrEqual: b selector]!

Item was changed:
  ----- Method: Cogit class>>mustBeGlobal: (in category 'translation') -----
  mustBeGlobal: var
  	"Answer if a variable must be global and exported.  Used for inst vars that are accessed from VM
  	 support code.  include cePositive32BitIntegerTrampoline as a hack to prevent it being inlined (it is
  	 only used outside of Cogit by the object representation).  Include CFramePointer CStackPointer as
  	 a hack to get them declared at all."
  	^#('ceBaseFrameReturnTrampoline' 'ceCaptureCStackPointers' 'ceCheckForInterruptTrampoline'
  		'ceEnterCogCodePopReceiverReg' 'realCEEnterCogCodePopReceiverReg'
  		'ceEnterCogCodePopReceiverAndClassRegs' 'realCEEnterCogCodePopReceiverAndClassRegs'
  		'ceReturnToInterpreterTrampoline' 'ceCannotResumeTrampoline'
  		'ceTryLockVMOwner' 'ceUnlockVMOwner'
+ 		'cmEntryOffset' 'cmNoCheckEntryOffset' 'cmDynSuperEntryOffset' 'missOffset'
- 		'cmEntryOffset' 'cmNoCheckEntryOffset' 'cmDynSuperEntryOffset'
  		'blockNoContextSwitchOffset' 'breakPC'
  		'CFramePointer' 'CStackPointer' 'cFramePointerInUse' 'ceGetSP'
  		'traceFlags' 'traceStores' 'debugPrimCallStackOffset')
  			includes: var!

Item was changed:
  ----- Method: Cogit>>interpretOffset (in category 'in-line cacheing') -----
  interpretOffset
  	<api>
+ 	<cmacro: '() missOffset'>
  	^missOffset!



More information about the Vm-dev mailing list