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

commits at source.squeak.org commits at source.squeak.org
Mon Jun 23 22:56:47 UTC 2014


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

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

Name: VMMaker-dtl.347
Author: dtl
Time: 23 June 2014, 6:55:41.171 pm
UUID: 0e985655-74a3-4561-8daf-4a4740c19a3b
Ancestors: VMMaker-dtl.346

Ensure that initializeSmallIntegers is called before generating the interpreter file because pool constants may have been changed when running simulation (symptom: a 64 bit image crashes because ConstMinusOne has been rendered as unsigned 32 bit, when it should be twos complement -1).

Remove KedamaPlugin from defaultUnixSpec because it duplicates the more up to date KedamaPlugin2.

Fix a trivial comment typo in SlangTest>>testFetchClssOfIsFullyInlined.

=============== Diff against VMMaker-dtl.346 ===============

Item was changed:
  ----- Method: SlangTest>>testFetchClassOfIsFullyInlined (in category 'testing interpreter') -----
  testFetchClassOfIsFullyInlined
+ 	"Test for inlining error resolved in VMMaker 4.13.4 (VMMaker-dtl.343). In this example,
- 	"Test for inlining error resolved in VMMaker 4.13.4 (VMMaker-dtl.343).. In this example,
  	the ObjectMemoy>>wordMask method must be inlined (marked complete) in order for
  	fetchClassOf: to be inlined. Some versions of the inliner treat the #cCode:inSmalltalk:
  	at the root of the wordMask method as an indication that it is not completely inlined.
  	This in turn prevents fetchClassOf: from being inlined."
  
  	| stssi m |
  	stssi := SlangTestSupportInterpreter inline: true.
  	m := stssi asCString: #tryInliningForFetchClassOf:.
  	self deny: ('*fetchClassOf(rcvr);*' match: m). "fetchClassOf() should not appear as a function call"
  	self assert: ('*/# begin fetchClassOf: #/*' match: m). "fetchClassOf: has been inlined"
  !

Item was changed:
  ----- Method: VMMaker>>generateInterpreterFile (in category 'generate sources') -----
  generateInterpreterFile
  	"Translate the Smalltalk description of the virtual machine into C.  If 'self doInlining' is true, small method bodies are inlined to reduce procedure call overhead.  On the PPC, this results in a factor of three speedup with only 30% increase in code size.  Subclasses can use specialised versions of CCodeGenerator and interpreterClass."
  
  	| cg |
  	self needsToRegenerateInterpreterFile ifFalse: [^nil].
  	self interpreterClass initialize.
  	ObjectMemory initializeConstants.
+ 	ObjectMemory initializeSmallIntegers. "Overridden in simulation, restore for code generation"
  	Interpreter initializeInterpreterSourceVersion.
  	cg := self createCodeGenerator.
  	cg declareMethodsStatic: false.
  	self interpreterClass initializeCodeGenerator: cg.
  	cg vmClass: self interpreterClass.
  	cg storeHeaderFor: interpreterClassName onFile: self interpreterHeaderPath.
  	cg storeCodeOnFile: self interpreterFilePath doInlining: self doInlining.
  	self interpreterClass additionalHeadersDo:
  		[:headerName :headerContents| | filePath |
  		 filePath := self coreVMDirectory fullNameFor: headerName.
  		 (cg needToGenerateHeader: headerName file: filePath contents: headerContents) ifTrue:
  			 [cg storeHeaderOnFile: filePath contents: headerContents]].
  	self interpreterClass apiExportHeaderName ifNotNil:
  		[cg storeAPIExportHeader: self interpreterClass apiExportHeaderName
  			OnFile: (self sourceFilePathFor: self interpreterClass apiExportHeaderName)].
  !

Item was changed:
  ----- Method: VMMakerTool class>>defaultUnixSpec (in category 'configurations') -----
  defaultUnixSpec
  	"Typical VMMaker spec for a unix/linux target platform"
  
  	"VMMakerTool defaultUnixSpec"
  
  	^#(
  		#(	"internal plugins"
  			#ADPCMCodecPlugin
  			#AsynchFilePlugin
  			#BMPReadWriterPlugin
  			#BalloonEnginePlugin
  			#BitBltSimulation
  			#CroquetPlugin
  			#DSAPlugin
  			#DeflatePlugin
  			#DropPlugin
  			#FFTPlugin
  			#FilePlugin
  			#FloatArrayPlugin
  			#FloatMathPlugin
  			#GeniePlugin
  			#JPEGReadWriter2Plugin
  			#JPEGReaderPlugin
  			#JoystickTabletPlugin
  			#KlattSynthesizerPlugin
  			#LargeIntegersPlugin
  			#LocalePlugin
  			#MD5Plugin
  			#Matrix2x3Plugin
  			#MiscPrimitivePlugin
  			#RandPlugin
  			#RePlugin
  			#SHA256Plugin
  			#SecurityPlugin
  			#SerialPlugin
  			#SlangTestPlugin
  			#SlangTestSupportPlugin
  			#SocketPlugin
  			#SoundCodecPlugin
  			#SoundGenerationPlugin
  			#SoundPlugin
  			#StarSqueakPlugin
  			#SurfacePlugin
  		)
  		#(	"external plugins"
  			#B3DAcceleratorPlugin
  			#B3DEnginePlugin
  			#ClipboardExtendedPlugin
  			#DBusPlugin
  			#FFIPlugin
  			#FileCopyPlugin
  			#FT2Plugin
  			#GStreamerPlugin
  			#HostWindowPlugin
- 			#KedamaPlugin
  			#KedamaPlugin2
  			#MIDIPlugin
  			#Mpeg3Plugin
  			#RomePlugin
  			#UUIDPlugin
  			#UnixAioPlugin
  			#UnixOSProcessPlugin
  			#XDisplayControlPlugin
  			#CameraPlugin
  			#ScratchPlugin
  			#UnicodePlugin
  			#WeDoPlugin
  			#SqueakSSLPlugin
  		)
  		true			"inline flag"
  		false			"forBrowser flag"
  		'unix'			"platform"
  		'src'			"source directory for generated sources"
  		'platforms'		"path to platform sources"
  		4				"unused, was bytesPerWord which is now a compile time definition"
  		true			"unused, was flag for source directtory pathname is relative"
  		true			"unused, was flag for platforms directory path is relative"
  		'Interpreter'	"interpreter class name"
  	)!



More information about the Vm-dev mailing list