[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:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2561.mcz

==================== 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.

Simulator:
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>
  	^self
  		cppIf: MULTIPLEBYTECODESETS
  		ifTrue:
  			[(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
  	<api>
  	<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.
  	hasYoungObj
  		ifTrue: [methodZone ensureInYoungReferrers: cogMethod]
  		ifFalse: [cogMethod cmRefersToYoung: false]!

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



More information about the Vm-dev mailing list