[Vm-dev] VM Maker: Cog-eem.217.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Nov 19 01:00:58 UTC 2014


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

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

Name: Cog-eem.217
Author: eem
Time: 18 November 2014, 5:00:27.511 pm
UUID: 19ec44cb-da23-479f-bf4b-4008248639cb
Ancestors: Cog-eem.216

Remember to copy across hash bits in the bootstrap.
Copy pinned and immutable bits also (even if they're
not yet set).

=============== Diff against Cog-eem.216 ===============

Item was changed:
  ----- Method: SpurBootstrap32to64>>clone: (in category 'bootstrap image') -----
  clone: obj32
+ 	| obj64 format numSlots numBytes hash |
- 	| obj64 format numSlots numBytes |
  	format := heap32 formatOf: obj32.
  	numSlots := heap32 numSlotsOf: obj32.
  	format > heap32 lastPointerFormat ifTrue:
  		[format < heap32 firstByteFormat
  			ifTrue:
  				[format = heap32 firstLongFormat
  					ifTrue:
  						[numSlots := heap32 numSlotsOf: obj32.
  						 numSlots odd ifTrue:
  							[format := format + 1].
  						 numSlots := numSlots + 1 // 2]
  					ifFalse: [self error: 'bad format']]
  			ifFalse:
  				[numBytes := heap32 numBytesOf: obj32.
  				 format < heap32 firstCompiledMethodFormat
  					ifTrue:
  						[format := heap64 byteFormatForNumBytes: numBytes.
  						 numSlots := numSlots + 1 // 2]
  					ifFalse:
  						[numSlots := heap32 numPointerSlotsOf: obj32.
  						 numBytes := numBytes - (numSlots * heap32 bytesPerOop).
  						 format := (heap64 byteFormatForNumBytes: numBytes) + heap32 firstCompiledMethodFormat - heap32 firstByteFormat.
  						 numSlots := numSlots + (heap64 numSlotsForBytes: numBytes)]]].
  	obj64 := heap64
  				allocateSlots: numSlots
  				format: format
  				classIndex: (heap32 classIndexOf: obj32).
+ 	(hash := heap32 rawHashBitsOf: obj32) ~= 0 ifTrue:
+ 		[heap64 setHashBitsOf: obj64 to: hash].
+ 	(heap32 isImmutable: obj32) ~= 0 ifTrue:
+ 		[heap64 setIsImmutableOf: obj64 to: true].
+ 	(heap32 isPinned: obj32) ~= 0 ifTrue:
+ 		[heap64 setIsPinnedOf: obj64 to: true].
+ 	self deny: (heap32 isRemembered: obj32).
+ 	self deny: (heap32 isMarked: obj32).
+ 	self deny: (heap32 isGrey: obj32).
  	reverseMap at: obj64 put: obj32.
  	^map at: obj32 put: obj64!



More information about the Vm-dev mailing list