Andreas Raab uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-ar.80.mcz
==================== Summary ====================
Name: Compiler-ar.80
Author: ar
Time: 5 September 2009, 10:06:25 am
UUID: 82001507-c038-784a-a4e2-0c969b53800f
Ancestors: Compiler-eem.79
Add an initialize method working around the limitations of MCDs and scripts.
=============== Diff against Compiler-eem.79 ===============
Item was added:
+ ----- Method: Compiler class>>initialize (in category 'class initialization') -----
+ initialize
+ "For the benefit of MC running a required script in the proper order."
+ #('Compiler' 'Kernel' 'System') do:[:pkgName|
+ Transcript nextPutAll: pkgName; cr; flush.
+ (PackageInfo named: pkgName) methods
+ do: [:ea | ea actualClass recompile: ea methodSymbol]
+ displayingProgress: 'Recompiling ', pkgName,'...']
+
+ !
On Fri, 4 Sep 2009 04:51:35 0000, commits(a)source.squeak.org
<commits(a)source.squeak.org> wrote:
> Andreas Raab uploaded a new version of Kernel to project The Trunk:
> http://source.squeak.org/trunk/Kernel-ar.238.mcz
>
> ==================== Summary ====================
>
> Name: Kernel-ar.238
> Author: ar
> Time: 3 September 2009, 9:50:51 am
> UUID: 9896c3f8-760f-e942-ac84-5f6c9127150c
> Ancestors: Kernel-ar.237
>
> http://bugs.squeak.org/view.php?id=7321
>
> Change Set: AtomicProcessSuspend
> Date: 23 March 2009
> Author: Andreas Raab
>
> In-image support for atomic process suspend.
>
> =============== Diff against Kernel-ar.237 ===============
>
> Item was changed:
> ----- Method: Process>>suspend (in category 'changing process state')
> -----
> suspend
> + "Primitive. Stop the process that the receiver represents in such a way
> - "Stop the process that the receiver represents in such a way
> that it can be restarted at a later time (by sending the receiver the
> message resume). If the receiver represents the activeProcess, suspend
> it.
> + Otherwise remove the receiver from the list of waiting processes.
> + The return value of this method is the list the receiver was previously
> on (if any)."
> + | oldList |
> + <primitive: 88>
> + "This is fallback code for VMs which only support the old
> primitiveSuspend which
> + would not accept processes that are waiting to be run."
> + myList ifNil:[^nil]. "this allows us to use suspend multiple times"
> + oldList := myList.
> + myList := nil.
> + oldList remove: self ifAbsent:[].
> + ^oldList!
> - Otherwise remove the receiver from the list of waiting processes."
> -
> - self isActiveProcess ifTrue: [
> - myList := nil.
> - self primitiveSuspend.
> - ] ifFalse: [
> - myList ifNotNil: [
> - myList remove: self ifAbsent: [].
> - myList := nil].
> - ]
> - !
>
> Item was changed:
> ----- Method: Process>>offList (in category 'accessing') -----
> offList
> + "OBSOLETE. Process>>suspend will atomically reset myList if the process
> is suspended.
> + There should never be a need to send #offList but some older users may
> not be aware
> + of the changed semantics to suspend and may try the old hickadidoo seen
> here:
> - "Inform the receiver that it has been taken off a list that it was
> - suspended on. This is to break a backpointer."
>
> + (suspendingList := process suspendingList) == nil
> + ifTrue: [process == Processor activeProcess ifTrue: [process suspend]]
> + ifFalse: [suspendingList remove: process ifAbsent:[].
> + process offList].
> +
> + Usages like the above should be replaced by a simple 'process suspend' "
> myList := nil!
>
> Item was changed:
> ----- Method: Process>>terminate (in category 'changing process state')
> -----
> terminate
> "Stop the process that the receiver represents forever. Unwind to
> execute pending ensure:/ifCurtailed: blocks before terminating."
>
> + | ctxt unwindBlock oldList |
> - | ctxt unwindBlock inSema |
> self isActiveProcess ifTrue: [
> ctxt := thisContext.
> [ ctxt := ctxt findNextUnwindContextUpTo: nil.
> ctxt isNil
> ] whileFalse: [
> unwindBlock := ctxt tempAt: 1.
> unwindBlock ifNotNil: [
> ctxt tempAt: 1 put: nil.
> thisContext terminateTo: ctxt.
> unwindBlock value].
> ].
> thisContext terminateTo: nil.
> + self suspend.
> + ] ifFalse:[
> + myList ifNotNil:[oldList := self suspend].
> + suspendedContext ifNotNil:[
> - myList := nil.
> - self primitiveSuspend.
> - ] ifFalse: [
> - "Since the receiver is not the active process, drop its priority to
> rock-bottom so that
> - it doesn't accidentally preempt the process that is trying to terminate
> it."
> - priority := 10.
I admit not fully understanding everything here, but should you
perhaps have kept the priority drop here? Otherwise, by my
understanding, the process that is meant to be terminated might be
restarted in this line here before it gets suspended:
> + myList ifNotNil:[oldList := self suspend].
Gulik.
--
http://gulik.pbwiki.com/
Andreas Raab uploaded a new version of Exceptions to project The Trunk:
http://source.squeak.org/trunk/Exceptions-eem.12.mcz
==================== Summary ====================
Name: Exceptions-eem.12
Author: eem
Time: 5 September 2009, 3:36:07 am
UUID: 222baa54-c057-4244-8484-c4d78fb1fca1
Ancestors: Exceptions-ar.11
First package of eight in closure compiler fixes 9/5/2009.
Add reachedDefaultHandler to MessageNotUnderstood so that doesNotUnderstand: can support resume:.
=============== Diff against Exceptions-ar.11 ===============
Item was added:
+ ----- Method: MessageNotUnderstood>>initialize (in category 'initialize-release') -----
+ initialize
+ super initialize.
+ reachedDefaultHandler := false!
Item was added:
+ ----- Method: MessageNotUnderstood>>defaultAction (in category 'exceptionDescription') -----
+ defaultAction
+ reachedDefaultHandler := true.
+ super defaultAction!
Item was added:
+ ----- Method: MessageNotUnderstood>>reachedDefaultHandler (in category 'accessing') -----
+ reachedDefaultHandler
+ ^reachedDefaultHandler!
Item was changed:
Error subclass: #MessageNotUnderstood
+ instanceVariableNames: 'message receiver reachedDefaultHandler'
- instanceVariableNames: 'message receiver'
classVariableNames: ''
poolDictionaries: ''
category: 'Exceptions-Kernel'!
!MessageNotUnderstood commentStamp: '<historical>' prior: 0!
This exception is provided to support Object>>doesNotUnderstand:.!
Today I was faced with trying to consolidate some overrides for the
iPhone work and faced the following issues: Or perhaps it just wasn't
my day
to do software development on the EuroStar.
(a) I need really to extend or subclass InputEventSensor
(1) I'm not really sure how to best add instance variables to
InputEventSensor via MC.
(2) I wanted to make a subclass, but then discovered RFBServer which
I need actually hard codes a reference to InputEventSensor versus saying
InputEventHandler defaultClass (or something)
(3) RFBEventSensor then cheefully subclasses InputEventSensor which
defeats my proposed subclass, not sure how in MC I could change the
class hierarcy of someone else.
(b) RBSpellChecker only picks between macintosh and other, so adding a
subclass for iPhone means hacking startup for RBSpellChecker, versus
having the
more standard iteration over subclasses and having them choose who can
do the work. Also if it's not macintosh that does not mean it's
iPhone, or windows, risc, or unix...
These both seemed hurdles to getting somthing productive done so I'll
welcome comments about how to make it easier.
--
=
=
=
========================================================================
John M. McIntosh <johnmci(a)smalltalkconsulting.com> Twitter:
squeaker68882
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
=
=
=
========================================================================