[squeak-dev] Squeak 4.6: System-cwp.754.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Dec 8 05:14:36 UTC 2015
Colin Putney uploaded a new version of System to project Squeak 4.6:
http://source.squeak.org/squeak46/System-cwp.754.mcz
==================== Summary ====================
Name: System-cwp.754
Author: cwp
Time: 7 December 2015, 9:14:14.615 pm
UUID: 68390bf4-02ab-46d4-b3bc-96bf2723e7d5
Ancestors: System-topa.753
Backported From: System-cwp.782
Backport image segment serialization fixes from trunk
=============== Diff against System-topa.753 ===============
Item was removed:
- ----- Method: Association>>objectForDataStream: (in category '*System-Object Storage-objects from disk') -----
- objectForDataStream: refStrm
- | dp |
- "I am about to be written on an object file. If I am a known global, write a proxy that will hook up with the same resource in the destination system."
- self flag: #environments.
-
- ^ (Smalltalk globals associationAt: key ifAbsent: [nil]) == self
- ifTrue: [dp := DiskProxy global: #Smalltalk selector: #associationOrUndeclaredAt:
- args: (Array with: key).
- refStrm replace: self with: dp.
- dp]
- ifFalse: [self]!
Item was changed:
----- Method: DiskProxy>>comeFullyUpOnReload: (in category 'i/o') -----
comeFullyUpOnReload: smartRefStream
"Internalize myself into a fully alive object after raw loading from a DataStream. (See my class comment.) DataStream will substitute the object from this eval for the DiskProxy."
+ | globalObj symbol pr nn arrayIndex env |
- | globalObj symbol pr nn arrayIndex |
- self flag: #environments.
symbol := globalObjectName.
"See if class is mapped to another name"
(smartRefStream respondsTo: #renamed) ifTrue: [
"If in outPointers in an ImageSegment, remember original class name.
See mapClass:installIn:. Would be lost otherwise."
((thisContext sender sender sender sender sender sender
sender sender receiver class == ImageSegment) and: [
thisContext sender sender sender sender method ==
(DataStream compiledMethodAt: #readArray)]) ifTrue: [
arrayIndex := (thisContext sender sender sender sender) tempAt: 4.
"index var in readArray. Later safer to find i on stack of context."
smartRefStream renamedConv at: arrayIndex put: symbol]. "save original name"
symbol := smartRefStream renamed at: symbol ifAbsent: [symbol]]. "map"
+ env := Environment current.
+ globalObj := env valueOf: symbol ifAbsent: [
- globalObj := Smalltalk at: symbol ifAbsent: [
preSelector == nil & (constructorSelector = #yourself) ifTrue: [
Transcript cr; show: symbol, ' is undeclared.'.
+ env undeclare: symbol.
- (Undeclared includesKey: symbol) ifTrue: [^ Undeclared at: symbol].
- Undeclared at: symbol put: nil.
^ nil].
^ self error: 'Global "', symbol, '" not found'].
((symbol == #World) and: [Smalltalk isMorphic not]) ifTrue: [
self inform: 'These objects will work better if opened in a Morphic World.
Dismiss and reopen all menus.'].
preSelector ifNotNil: [
Symbol hasInterned: preSelector ifTrue: [:selector |
[globalObj := globalObj perform: selector] on: Error do: [:ex |
ex messageText = 'key not found' ifTrue: [^ nil].
^ ex signal]]
].
symbol == #Project ifTrue: [
(constructorSelector = #fromUrl:) ifTrue: [
nn := (constructorArgs first findTokens: '/') last.
nn := (nn findTokens: '.|') first.
pr := Project named: nn.
^ pr ifNil: [self] ifNotNil: [pr]].
pr := globalObj perform: constructorSelector withArguments: constructorArgs.
^ pr ifNil: [self] ifNotNil: [pr]]. "keep the Proxy if Project does not exist"
constructorSelector ifNil: [^ globalObj].
Symbol hasInterned: constructorSelector ifTrue: [:selector |
[^ globalObj perform: selector withArguments: constructorArgs] on: Error do: [:ex |
ex messageText = 'key not found' ifTrue: [^ nil].
^ ex signal]
].
"args not checked against Renamed"
^ nil "was not in proper form"!
More information about the Squeak-dev
mailing list
|