The Trunk: System-nice.360.mcz

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

The Trunk: System-nice.360.mcz

commits-2
Nicolas Cellier uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-nice.360.mcz

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

Name: System-nice.360
Author: nice
Time: 22 August 2010, 9:21:39.144 pm
UUID: 70577a51-fb9c-4b09-9082-2ec8c70b31ef
Ancestors: System-nice.359

Fix WeakMessageSend Part 2.
Thanks to Juan, see http://bugs.squeak.org/view.php?id=7352


=============== Diff against System-nice.359 ===============

Item was changed:
  ----- Method: WeakActionSequenceTrappingErrors>>valueStartingFrom: (in category 'evaluating') -----
  valueStartingFrom: startIndex
  "Do the same as my parent, but make sure that all actions that do not
  give errors are evaluated before resignaling the ones that gave errors
  (giving the chance to clients to handle them)."
 
  "Note: I currently trap Halt,Error so that I am sure to get a Halt event in case of a Halt. This is being fixed in the exception system - when the fix is done it will be enough to capture only Error."
 
  | each answer |
+ answer := nil.
  startIndex to: self size do: [:index |
  each := self at: index.
+ [
+ answer := each valueOtherwise: [ answer ].
+ ]
+ on: Halt , Error
+ do: [:exc |
+ self valueStartingFrom: index + 1.
+ exc pass]].
- each isReceiverOrAnyArgumentGarbage ifFalse: [
- [answer := each value]
- on: Halt, Error
- do: [:exc |
- self valueStartingFrom: index + 1.
- exc pass]]].
  ^ answer!

Item was changed:
  ----- Method: WeakActionSequenceTrappingErrors>>valueWithArguments:startingFrom: (in category 'evaluating') -----
  valueWithArguments: anArray startingFrom: startIndex
  "Do the same as my parent, but make sure that all actions that do not
  give errors are evaluated before resignaling the ones that gave errors
  (giving the chance to clients to handle them)."
 
  "Note: I currently trap Halt,Error so that I am sure to get a Halt event in case of a Halt. This is being fixed in the exception system - when the fix is done it will be enough to capture only Error."
 
  | each answer |
+ answer := nil.
  startIndex to: self size do: [:index |
  each := self at: index.
+ [
+ answer := each valueWithArguments: anArray otherwise: [ answer ].
+ ]
+ on: Halt , Error
+ do: [:exc |
+ self valueWithArguments: anArray startingFrom: index + 1.
+ exc pass]].
- each isReceiverOrAnyArgumentGarbage ifFalse: [
- [answer := each valueWithArguments: anArray]
- on: Halt, Error
- do: [:exc |
- self valueWithArguments: anArray startingFrom: index + 1.
- exc pass]]].
  ^ answer!