VM Maker: VMMaker.oscog-eem.2176.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.2176.mcz

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

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

Name: VMMaker.oscog-eem.2176
Author: eem
Time: 22 March 2017, 8:11:39.73899 pm
UUID: b18f5fff-59c9-4fb4-bc56-50a29e43c0a9
Ancestors: VMMaker.oscog-eem.2175

Fix in-image compilation for imported Sista methods which may not be decompileable.

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

Item was changed:
+ ----- Method: Cogit class>>asOptionsDictionary: (in category 'in-image compilation support') -----
- ----- Method: Cogit class>>asOptionsDictionary: (in category 'in-image compilation') -----
  asOptionsDictionary: optionsDictionaryOrArray
  optionsDictionaryOrArray isArray ifTrue:
  [| dict |
  dict := Dictionary new.
  self assert: optionsDictionaryOrArray size even.
  1 to: optionsDictionaryOrArray size by: 2 do:
  [:i| | key |
  key := optionsDictionaryOrArray at: i.
  self assert: key isSymbol.
  dict at: key put: (optionsDictionaryOrArray at: i + 1)].
  ^dict].
  ^optionsDictionaryOrArray!

Item was changed:
+ ----- Method: Cogit class>>attemptToComputeTempNamesFor: (in category 'in-image compilation support') -----
- ----- Method: Cogit class>>attemptToComputeTempNamesFor: (in category 'in-image compilation') -----
  attemptToComputeTempNamesFor: aCompiledMethod
  (aCompiledMethod respondsTo: #tempNames) ifTrue:
  [| blocks |
  blocks := aCompiledMethod embeddedBlockClosures.
  initializationOptions
  at: #tempNames
+ put: (Dictionary withAll: {aCompiledMethod initialPC -> ([aCompiledMethod tempNames]
+ on: MessageNotUnderstood
+ do: [:ex|
+ (self isSistaMessage: ex message unimplementedIn: Decompiler) ifTrue:
+ [^self].
+ ex pass])},
- put: (Dictionary withAll: {aCompiledMethod initialPC -> aCompiledMethod tempNames},
  (blocks
  ifEmpty: [#()]
  ifNotEmpty:
  [aCompiledMethod embeddedBlockClosures
  with: ((aCompiledMethod methodNode schematicTempNamesString allButFirst:
  (aCompiledMethod methodNode schematicTempNamesString indexOf: $[)) piecesCutWhere: [:a :b| b = $[])
  collect: [:c :s| c startpc -> s substrings]]))]!

Item was changed:
+ ----- Method: Cogit class>>instanceForTests: (in category 'in-image compilation support') -----
- ----- Method: Cogit class>>instanceForTests: (in category 'in-image compilation') -----
  instanceForTests: optionsDictionaryOrArray
  "Initialize all the relevant classes from the options and answer a new instance of me."
  | initOptions |
  initOptions := self asOptionsDictionary: optionsDictionaryOrArray.
  CoInterpreter initializeWithOptions: initOptions.
  CoInterpreter objectMemoryClass initializeWithOptions: initOptions.
  self initializeWithOptions: initOptions.
  ^self new!

Item was added:
+ ----- Method: Cogit class>>isSistaMessage:unimplementedIn: (in category 'in-image compilation support') -----
+ isSistaMessage: aMessageOrSelector unimplementedIn: aClass
+ | selector |
+ selector := aMessageOrSelector selector.
+ ^(InstructionClient includesSelector: selector)
+   and: [(aClass includesSelector: selector) not]!

Item was changed:
  ----- Method: CurrentImageCoInterpreterFacade>>oopForObject: (in category 'object map') -----
  oopForObject: o
+ self subclassResponsibility!
- ^(o isInteger and: [o between: objectMemory minSmallInteger and: objectMemory maxSmallInteger])
- ifTrue: [o << 1 bitOr: 1]
- ifFalse: [objectMap at: o ifAbsentPut: [objectMap size * 8 + (1024 * 1024)]]!

Item was changed:
  ----- Method: CurrentImageCoInterpreterFacadeFor64BitSpurObjectRepresentation>>objectForOop: (in category 'private-cacheing') -----
  objectForOop: anOop
  "This is a keyAtValue: search and so needs speeding up either by a reverse map or a simple cache."
  ^(anOop bitAnd: 7) caseOf: {
  [0] -> [anOop = cachedOop
  ifTrue: [cachedObject]
  ifFalse: [cachedObject := objectMap keyAtValue: anOop. "may raise Error"
+ cachedOop := anOop. "Don't assign until accessed without error"
- cachedOop := anOop. "Dom't assign until accessed without error"
  cachedObject]].
  [1] -> [anOop signedIntFromLong64 >> 3].
  [2] -> [Character value: anOop >> 3].
  [4] -> [objectMemory smallFloatValueOf: anOop] }!

Item was added:
+ ----- Method: CurrentImageCoInterpreterFacadeForSpurObjectRepresentation>>fetchClassTagOf: (in category 'accessing') -----
+ fetchClassTagOf: anOop
+ | class |
+ self assert: SmalltalkImage current isRunningSpur.
+ class := (self objectForOop: anOop) class.
+ ^SystemVersion current isPharo
+ ifTrue: [class basicIdentityHash]
+ ifFalse: [class identityHash]!

Item was changed:
  ----- Method: CurrentImageCoInterpreterFacadeForSpurObjectRepresentation>>objectForOop: (in category 'private-cacheing') -----
  objectForOop: anOop
  "This is a keyAtValue: search and so needs speeding up either by a reverse map or a simple cache."
  ^(anOop bitAnd: 3) caseOf: {
  [0] -> [anOop = cachedOop
  ifTrue: [cachedObject]
  ifFalse: [cachedObject := objectMap keyAtValue: anOop. "may raise Error"
+ cachedOop := anOop. "Don't assign until accessed without error"
- cachedOop := anOop. "Dom't assign until accessed without error"
  cachedObject]].
  [1] -> [anOop signedIntFromLong >> 1].
  [2] -> [Character value: anOop >> 2].
  [3] -> [anOop signedIntFromLong >> 1] }!

Item was changed:
  ----- Method: CurrentImageCoInterpreterFacadeForSqueakV3ObjectRepresentation>>objectForOop: (in category 'private-cacheing') -----
  objectForOop: anOop
  "This is a keyAtValue: search and so needs speeding up either by a reverse map or a simple cache."
  ^(anOop bitAnd: 3) caseOf: {
  [0] -> [anOop = cachedOop
  ifTrue: [cachedObject]
  ifFalse: [cachedObject := objectMap keyAtValue: anOop. "may raise Error"
+ cachedOop := anOop. "Don't assign until accessed without error"
- cachedOop := anOop. "Dom't assign until accessed without error"
  cachedObject]].
  [1] -> [anOop signedIntFromLong >> 1].
  [3] -> [anOop signedIntFromLong >> 1] }!

Item was added:
+ ----- Method: CurrentImageCoInterpreterFacadeForSqueakV3ObjectRepresentation>>oopForObject: (in category 'object map') -----
+ oopForObject: o
+ ^(o isInteger and: [o between: objectMemory minSmallInteger and: objectMemory maxSmallInteger])
+ ifTrue: [o << 1 bitOr: 1]
+ ifFalse: [objectMap at: o ifAbsentPut: [objectMap size * 8 + (1024 * 1024)]]!