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

commits at source.squeak.org commits at source.squeak.org
Wed Sep 11 02:53:13 UTC 2019

Eliot Miranda uploaded a new version of VMMaker to project VM Maker:

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

Name: VMMaker.oscog-eem.2561
Author: eem
Time: 10 September 2019, 7:38:19.641414 pm
UUID: 38122521-e0fd-4e4d-9903-8a99a82bac38
Ancestors: VMMaker.oscog-nice.2560

FIx a bug in followForwardedLiteralsIn:; whether the methodObject is young or not is important, and must be recorded.

Remove an inadvertent break. Save hair pulling by complaining about the alternative bytecode set if MULTIPLEBYTECODESETS is unset.  Check in bytecodeSetOffsetFor:.  Make sure the Cogit>>kosherYoungReferrers answers the result.

=============== Diff against VMMaker.oscog-nice.2560 ===============

Item was changed:
  ----- Method: CoInterpreter>>postBecomeAction: (in category 'object memory support') -----
  postBecomeAction: theBecomeEffectsFlags
  	"Clear the gcMode var and let the Cogit do its post GC checks."
- 	self break.
  	super postBecomeAction: theBecomeEffectsFlags.
  	(objectMemory hasSpurMemoryManagerAPI)
  		ifTrue: [cogit followMovableLiteralsAndUpdateYoungReferrers]
  		ifFalse: [cogit cogitPostGCAction: gcMode].
  	self nilUncoggableMethods.
  	self assert: cogit kosherYoungReferrers.
  	gcMode := 0!

Item was changed:
  ----- Method: Cogit>>bytecodeSetOffsetFor: (in category 'initialization') -----
  bytecodeSetOffsetFor: aMethodObj
  	<inline: true>
  			[(coInterpreter methodUsesAlternateBytecodeSet: aMethodObj)
  				ifTrue: [256]
  				ifFalse: [0]]
+ 		ifFalse:
+ 			[self deny: (coInterpreter methodUsesAlternateBytecodeSet: aMethodObj).
+ 			 0]!
- 		ifFalse: [0]!

Item was changed:
  ----- Method: Cogit>>followForwardedLiteralsIn: (in category 'garbage collection') -----
  followForwardedLiteralsIn: cogMethod
  	<option: #SpurObjectMemory>
  	<var: #cogMethod type: #'CogMethod *'>
  	| hasYoungObj hasYoungObjPtr |
  	self assert: (cogMethod cmType ~= CMMethod or: [(objectMemory isForwarded: cogMethod methodObject) not]).
+ 	hasYoungObj := objectMemory isYoung: cogMethod methodObject.
- 	hasYoungObj := false.
  	(objectMemory shouldRemapOop: cogMethod selector) ifTrue:
  		[cogMethod selector: (objectMemory remapObj: cogMethod selector).
  		 (objectMemory isYoung: cogMethod selector) ifTrue:
  			[hasYoungObj := true]].
  	hasYoungObjPtr := (self addressOf: hasYoungObj put: [:val| hasYoungObj := val]) asInteger.
  	self mapFor: cogMethod
  		performUntil: #remapIfObjectRef:pc:hasYoung:
  		arg: hasYoungObjPtr.
  		ifTrue: [methodZone ensureInYoungReferrers: cogMethod]
  		ifFalse: [cogMethod cmRefersToYoung: false]!

Item was changed:
  ----- Method: Cogit>>kosherYoungReferrers (in category 'jit - api') -----
+ 	^methodZone kosherYoungReferrers!
- 	methodZone kosherYoungReferrers!

More information about the Vm-dev mailing list