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

commits at source.squeak.org commits at source.squeak.org
Thu Aug 7 15:13:25 UTC 2014


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

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

Name: VMMaker.oscog-eem.848
Author: eem
Time: 7 August 2014, 8:10:54.557 am
UUID: 2aa6755a-a96a-4834-bc08-5c0a831c4648
Ancestors: VMMaker.oscog-eem.847

if at first you don't succeed...
try to get the criterion for header regeneration right again...

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

Item was changed:
  ----- Method: CCodeGenerator>>needToGenerateHeader:file:contents: (in category 'C code generator') -----
  needToGenerateHeader: headerName file: interpHdrPath contents: newContentsArg
  	"Check if we need to regenerate a header file.  We always need to if the contents have changed.
  	 But if not we can avoid needless recompilations by not regenerating.  So only regenerate if the
+ 	 package stamp is dirty and the monticello stamp is clean."
+ 	| newContents oldContents dirtyStamp |
- 	 package is clean (version doesn't include a '*').  If we can't find a package version ask the user."
- 	| newContents oldContents makerStamp vmMakerIndex |
  	(FileDirectory default fileExists: interpHdrPath) ifFalse:
  		[^true].
  	newContents := newContentsArg.
  	oldContents := (FileDirectory default oldFileNamed: interpHdrPath) contentsOfEntireFile.
  	oldContents := oldContents copyReplaceAll: {Character cr. Character lf} with: {Character cr}.
  	oldContents replaceAll: Character lf with: Character cr.
+ 	dirtyStamp := (oldContents indexOfSubCollection: '* VMMaker') ~= 0.
- 	makerStamp := (vmMakerIndex := oldContents indexOfSubCollection: 'VMMaker') ~= 0
- 						ifTrue:
- 							[oldContents
- 								copyFrom: vmMakerIndex
- 								to: (oldContents indexOf: Character cr startingAt: vmMakerIndex) - 1]
- 						ifFalse: ['XXX'].
  	(newContents beginsWith: '/*') = (oldContents beginsWith: '/*') ifFalse:
  		[(newContents beginsWith: '/*') ifTrue:
  			[newContents := newContents readStream upToAll: '*/'; skipSeparators; upToEnd].
  		 (oldContents beginsWith: '/*') ifTrue:
  			[oldContents := oldContents readStream upToAll: '*/'; skipSeparators; upToEnd]].
  	^oldContents ~= newContents
+ 	 or: [(dirtyStamp and: [[((self class monticelloDescriptionFor: vmClass) includes: $*) not]
+ 							on: Error do: [:ex| false]]) "If no stamp don't worry"
- 	 or: [([((self class monticelloDescriptionFor: vmClass) includes: $*) not
- 		 and: [((self class monticelloDescriptionFor: vmClass) includesSubString: makerStamp) not]]
- 			on: Error
- 			do: [:ex| true])
  	 or: [self confirm: headerName, ' contents are unchanged.\Writing the file may cause recompilation of support files.\Do you want to write the header file?' withCRs]]!



More information about the Vm-dev mailing list