VM Maker: VMMaker.oscog-eem.2561.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

VM Maker: VMMaker.oscog-eem.2561.mcz

commits-2
 
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!