[squeak-dev] The Trunk: Kernel-eem.894.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Jan 29 18:55:08 UTC 2015
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.894.mcz
==================== Summary ====================
Name: Kernel-eem.894
Author: eem
Time: 29 January 2015, 10:54:41.65 am
UUID: 4c8074eb-6db4-4d9b-bbfe-cd8f7197b999
Ancestors: Kernel-ul.893
Access a process's environment from effectiveProcess
to provide correct environment access when debugging.
=============== Diff against Kernel-ul.893 ===============
Item was added:
+ ----- Method: Process>>effectiveEnvironment (in category 'private') -----
+ effectiveEnvironment
+ "effectiveProcess is a mechanism to allow process-faithful debugging. The debugger executes code
+ on behalf of processes, so unless some effort is made, the identity of Processor activeProcess is not
+ correctly maintained when debugging code. The debugger uses evaluate:onBehalfOf: to assign the
+ debugged process as the effectiveProcess of the process executing the code, preserving process
+ identity. By using the effectiveProcess's environment, access in the debugger is correct."
+ ^effectiveProcess
+ ifNil: [env]
+ ifNotNil:
+ [:theEffectiveProcess|
+ theEffectiveProcess effectiveEnvironment]!
Item was changed:
----- Method: Process>>effectiveProcess (in category 'accessing') -----
effectiveProcess
"effectiveProcess is a mechanism to allow process-faithful debugging. The debugger executes code
+ on behalf of processes, so unless some effort is made, the identity of Processor activeProcess is not
- on behalf of processes, so unless some effort is made the identity of Processor activeProcess is not
correctly maintained when debugging code. The debugger uses evaluate:onBehalfOf: to assign the
debugged process as the effectiveProcess of the process executing the code, preserving process
identity."
^effectiveProcess ifNil: [self]!
Item was changed:
----- Method: Process>>environmentAt:ifAbsent: (in category 'process specific') -----
environmentAt: key ifAbsent: aBlock
+ ^(self effectiveEnvironment ifNil: [ ^aBlock value ]) at: key ifAbsent: aBlock.!
- ^(env ifNil: [ ^aBlock value ]) at: key ifAbsent: aBlock.!
Item was changed:
----- Method: Process>>environmentAt:ifAbsentPut: (in category 'process specific') -----
environmentAt: key ifAbsentPut: aBlock
+ ^self setEffectiveEnvironment at: key ifAbsentPut: aBlock!
- ^(env ifNil: [ env := Dictionary new ]) at: key ifAbsentPut: aBlock.!
Item was changed:
----- Method: Process>>environmentAt:put: (in category 'process specific') -----
environmentAt: key put: value
+ ^self setEffectiveEnvironment at: key put: value!
- ^(env ifNil: [ env := Dictionary new ]) at: key put: value.!
Item was changed:
----- Method: Process>>environmentRemoveKey:ifAbsent: (in category 'process specific') -----
environmentRemoveKey: key ifAbsent: errorBlock
+ ^(self effectiveEnvironment ifNil: [^errorBlock value])
+ removeKey: key
+ ifAbsent: errorBlock!
- ^(env ifNil: [ ^errorBlock value ]) removeKey: key ifAbsent: errorBlock!
Item was added:
+ ----- Method: Process>>setEffectiveEnvironment (in category 'private') -----
+ setEffectiveEnvironment
+ "effectiveProcess is a mechanism to allow process-faithful debugging. The debugger executes code
+ on behalf of processes, so unless some effort is made, the identity of Processor activeProcess is not
+ correctly maintained when debugging code. The debugger uses evaluate:onBehalfOf: to assign the
+ debugged process as the effectiveProcess of the process executing the code, preserving process
+ identity. By using the effectiveProcess's environment, access in the debugger is correct."
+ ^effectiveProcess
+ ifNil: [env ifNil: [env := Dictionary new]]
+ ifNotNil:
+ [:theEffectiveProcess|
+ theEffectiveProcess setEffectiveEnvironment]!
More information about the Squeak-dev
mailing list
|