[prev in list] [next in list] [prev in thread] [next in thread]
List: squeak-vm-dev
Subject: [Vm-dev] VM Maker: VMMaker.oscog-eem.2176.mcz
From: commits () source ! squeak ! org
Date: 2017-03-23 3:12:26
Message-ID: E1cqtCa-00043m-AV () andreas
[Download RAW message or body]
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)]]!
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic